<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />

<title>20春_API_人工智能与机器学习_week05</title>

<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>



<style type="text/css">
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.7 (http://getbootstrap.com)
 * Copyright 2011-2016 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #f5f5f5;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 32px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 30px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav > li.disabled > a {
  color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 2px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 541px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav > li > a {
  color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb > .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
  border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
  border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
  border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  border-bottom: 0;
}
.panel > .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 18px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 2px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
  border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ddd;
}
.panel-default {
  border-color: #ddd;
}
.panel-default > .panel-heading {
  color: #333333;
  background-color: #f5f5f5;
  border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
  color: #f5f5f5;
  background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ddd;
}
.panel-primary {
  border-color: #337ab7;
}
.panel-primary > .panel-heading {
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
  color: #337ab7;
  background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #337ab7;
}
.panel-success {
  border-color: #d6e9c6;
}
.panel-success > .panel-heading {
  color: #3c763d;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
  color: #dff0d8;
  background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #d6e9c6;
}
.panel-info {
  border-color: #bce8f1;
}
.panel-info > .panel-heading {
  color: #31708f;
  background-color: #d9edf7;
  border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
  color: #d9edf7;
  background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #bce8f1;
}
.panel-warning {
  border-color: #faebcc;
}
.panel-warning > .panel-heading {
  color: #8a6d3b;
  background-color: #fcf8e3;
  border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
  color: #fcf8e3;
  background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #faebcc;
}
.panel-danger {
  border-color: #ebccd1;
}
.panel-danger > .panel-heading {
  color: #a94442;
  background-color: #f2dede;
  border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
  color: #f2dede;
  background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ebccd1;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #f5f5f5;
  border: 1px solid #e3e3e3;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 3px;
}
.well-sm {
  padding: 9px;
  border-radius: 1px;
}
.close {
  float: right;
  font-size: 19.5px;
  font-weight: bold;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #fff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 15px;
}
.modal-footer {
  padding: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 12px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #fff;
  text-align: center;
  background-color: #000;
  border-radius: 2px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 13px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 2px 2px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover > .arrow {
  border-width: 11px;
}
.popover > .arrow:after {
  border-width: 10px;
  content: "";
}
.popover.top > .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top > .arrow:after {
  content: " ";
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #fff;
}
.popover.right > .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
  content: " ";
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #fff;
}
.popover.bottom > .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom > .arrow:after {
  content: " ";
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #fff;
}
.popover.left > .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
  content: " ";
  right: 1px;
  border-right-width: 0;
  border-left-color: #fff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner > .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -moz-transition: -moz-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    -moz-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}
.carousel-inner > .active {
  left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner > .next {
  left: 100%;
}
.carousel-inner > .prev {
  left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}
.carousel-inner > .active.left {
  left: -100%;
}
.carousel-inner > .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #fff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #fff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #fff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
  content: " ";
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
/*!
*
* Font Awesome
*
*/
/*!
 *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0');
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}
.fa-pull-left {
  float: left;
}
.fa-pull-right {
  float: right;
}
.fa.fa-pull-left {
  margin-right: .3em;
}
.fa.fa-pull-right {
  margin-left: .3em;
}
/* Deprecated as of 4.4.0 */
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
.fa-pulse {
  -webkit-animation: fa-spin 1s infinite steps(8);
  animation: fa-spin 1s infinite steps(8);
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook-f:before,
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-feed:before,
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before,
.fa-gratipay:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper-pp:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-resistance:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-y-combinator-square:before,
.fa-yc-square:before,
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
.fa-buysellads:before {
  content: "\f20d";
}
.fa-connectdevelop:before {
  content: "\f20e";
}
.fa-dashcube:before {
  content: "\f210";
}
.fa-forumbee:before {
  content: "\f211";
}
.fa-leanpub:before {
  content: "\f212";
}
.fa-sellsy:before {
  content: "\f213";
}
.fa-shirtsinbulk:before {
  content: "\f214";
}
.fa-simplybuilt:before {
  content: "\f215";
}
.fa-skyatlas:before {
  content: "\f216";
}
.fa-cart-plus:before {
  content: "\f217";
}
.fa-cart-arrow-down:before {
  content: "\f218";
}
.fa-diamond:before {
  content: "\f219";
}
.fa-ship:before {
  content: "\f21a";
}
.fa-user-secret:before {
  content: "\f21b";
}
.fa-motorcycle:before {
  content: "\f21c";
}
.fa-street-view:before {
  content: "\f21d";
}
.fa-heartbeat:before {
  content: "\f21e";
}
.fa-venus:before {
  content: "\f221";
}
.fa-mars:before {
  content: "\f222";
}
.fa-mercury:before {
  content: "\f223";
}
.fa-intersex:before,
.fa-transgender:before {
  content: "\f224";
}
.fa-transgender-alt:before {
  content: "\f225";
}
.fa-venus-double:before {
  content: "\f226";
}
.fa-mars-double:before {
  content: "\f227";
}
.fa-venus-mars:before {
  content: "\f228";
}
.fa-mars-stroke:before {
  content: "\f229";
}
.fa-mars-stroke-v:before {
  content: "\f22a";
}
.fa-mars-stroke-h:before {
  content: "\f22b";
}
.fa-neuter:before {
  content: "\f22c";
}
.fa-genderless:before {
  content: "\f22d";
}
.fa-facebook-official:before {
  content: "\f230";
}
.fa-pinterest-p:before {
  content: "\f231";
}
.fa-whatsapp:before {
  content: "\f232";
}
.fa-server:before {
  content: "\f233";
}
.fa-user-plus:before {
  content: "\f234";
}
.fa-user-times:before {
  content: "\f235";
}
.fa-hotel:before,
.fa-bed:before {
  content: "\f236";
}
.fa-viacoin:before {
  content: "\f237";
}
.fa-train:before {
  content: "\f238";
}
.fa-subway:before {
  content: "\f239";
}
.fa-medium:before {
  content: "\f23a";
}
.fa-yc:before,
.fa-y-combinator:before {
  content: "\f23b";
}
.fa-optin-monster:before {
  content: "\f23c";
}
.fa-opencart:before {
  content: "\f23d";
}
.fa-expeditedssl:before {
  content: "\f23e";
}
.fa-battery-4:before,
.fa-battery:before,
.fa-battery-full:before {
  content: "\f240";
}
.fa-battery-3:before,
.fa-battery-three-quarters:before {
  content: "\f241";
}
.fa-battery-2:before,
.fa-battery-half:before {
  content: "\f242";
}
.fa-battery-1:before,
.fa-battery-quarter:before {
  content: "\f243";
}
.fa-battery-0:before,
.fa-battery-empty:before {
  content: "\f244";
}
.fa-mouse-pointer:before {
  content: "\f245";
}
.fa-i-cursor:before {
  content: "\f246";
}
.fa-object-group:before {
  content: "\f247";
}
.fa-object-ungroup:before {
  content: "\f248";
}
.fa-sticky-note:before {
  content: "\f249";
}
.fa-sticky-note-o:before {
  content: "\f24a";
}
.fa-cc-jcb:before {
  content: "\f24b";
}
.fa-cc-diners-club:before {
  content: "\f24c";
}
.fa-clone:before {
  content: "\f24d";
}
.fa-balance-scale:before {
  content: "\f24e";
}
.fa-hourglass-o:before {
  content: "\f250";
}
.fa-hourglass-1:before,
.fa-hourglass-start:before {
  content: "\f251";
}
.fa-hourglass-2:before,
.fa-hourglass-half:before {
  content: "\f252";
}
.fa-hourglass-3:before,
.fa-hourglass-end:before {
  content: "\f253";
}
.fa-hourglass:before {
  content: "\f254";
}
.fa-hand-grab-o:before,
.fa-hand-rock-o:before {
  content: "\f255";
}
.fa-hand-stop-o:before,
.fa-hand-paper-o:before {
  content: "\f256";
}
.fa-hand-scissors-o:before {
  content: "\f257";
}
.fa-hand-lizard-o:before {
  content: "\f258";
}
.fa-hand-spock-o:before {
  content: "\f259";
}
.fa-hand-pointer-o:before {
  content: "\f25a";
}
.fa-hand-peace-o:before {
  content: "\f25b";
}
.fa-trademark:before {
  content: "\f25c";
}
.fa-registered:before {
  content: "\f25d";
}
.fa-creative-commons:before {
  content: "\f25e";
}
.fa-gg:before {
  content: "\f260";
}
.fa-gg-circle:before {
  content: "\f261";
}
.fa-tripadvisor:before {
  content: "\f262";
}
.fa-odnoklassniki:before {
  content: "\f263";
}
.fa-odnoklassniki-square:before {
  content: "\f264";
}
.fa-get-pocket:before {
  content: "\f265";
}
.fa-wikipedia-w:before {
  content: "\f266";
}
.fa-safari:before {
  content: "\f267";
}
.fa-chrome:before {
  content: "\f268";
}
.fa-firefox:before {
  content: "\f269";
}
.fa-opera:before {
  content: "\f26a";
}
.fa-internet-explorer:before {
  content: "\f26b";
}
.fa-tv:before,
.fa-television:before {
  content: "\f26c";
}
.fa-contao:before {
  content: "\f26d";
}
.fa-500px:before {
  content: "\f26e";
}
.fa-amazon:before {
  content: "\f270";
}
.fa-calendar-plus-o:before {
  content: "\f271";
}
.fa-calendar-minus-o:before {
  content: "\f272";
}
.fa-calendar-times-o:before {
  content: "\f273";
}
.fa-calendar-check-o:before {
  content: "\f274";
}
.fa-industry:before {
  content: "\f275";
}
.fa-map-pin:before {
  content: "\f276";
}
.fa-map-signs:before {
  content: "\f277";
}
.fa-map-o:before {
  content: "\f278";
}
.fa-map:before {
  content: "\f279";
}
.fa-commenting:before {
  content: "\f27a";
}
.fa-commenting-o:before {
  content: "\f27b";
}
.fa-houzz:before {
  content: "\f27c";
}
.fa-vimeo:before {
  content: "\f27d";
}
.fa-black-tie:before {
  content: "\f27e";
}
.fa-fonticons:before {
  content: "\f280";
}
.fa-reddit-alien:before {
  content: "\f281";
}
.fa-edge:before {
  content: "\f282";
}
.fa-credit-card-alt:before {
  content: "\f283";
}
.fa-codiepie:before {
  content: "\f284";
}
.fa-modx:before {
  content: "\f285";
}
.fa-fort-awesome:before {
  content: "\f286";
}
.fa-usb:before {
  content: "\f287";
}
.fa-product-hunt:before {
  content: "\f288";
}
.fa-mixcloud:before {
  content: "\f289";
}
.fa-scribd:before {
  content: "\f28a";
}
.fa-pause-circle:before {
  content: "\f28b";
}
.fa-pause-circle-o:before {
  content: "\f28c";
}
.fa-stop-circle:before {
  content: "\f28d";
}
.fa-stop-circle-o:before {
  content: "\f28e";
}
.fa-shopping-bag:before {
  content: "\f290";
}
.fa-shopping-basket:before {
  content: "\f291";
}
.fa-hashtag:before {
  content: "\f292";
}
.fa-bluetooth:before {
  content: "\f293";
}
.fa-bluetooth-b:before {
  content: "\f294";
}
.fa-percent:before {
  content: "\f295";
}
.fa-gitlab:before {
  content: "\f296";
}
.fa-wpbeginner:before {
  content: "\f297";
}
.fa-wpforms:before {
  content: "\f298";
}
.fa-envira:before {
  content: "\f299";
}
.fa-universal-access:before {
  content: "\f29a";
}
.fa-wheelchair-alt:before {
  content: "\f29b";
}
.fa-question-circle-o:before {
  content: "\f29c";
}
.fa-blind:before {
  content: "\f29d";
}
.fa-audio-description:before {
  content: "\f29e";
}
.fa-volume-control-phone:before {
  content: "\f2a0";
}
.fa-braille:before {
  content: "\f2a1";
}
.fa-assistive-listening-systems:before {
  content: "\f2a2";
}
.fa-asl-interpreting:before,
.fa-american-sign-language-interpreting:before {
  content: "\f2a3";
}
.fa-deafness:before,
.fa-hard-of-hearing:before,
.fa-deaf:before {
  content: "\f2a4";
}
.fa-glide:before {
  content: "\f2a5";
}
.fa-glide-g:before {
  content: "\f2a6";
}
.fa-signing:before,
.fa-sign-language:before {
  content: "\f2a7";
}
.fa-low-vision:before {
  content: "\f2a8";
}
.fa-viadeo:before {
  content: "\f2a9";
}
.fa-viadeo-square:before {
  content: "\f2aa";
}
.fa-snapchat:before {
  content: "\f2ab";
}
.fa-snapchat-ghost:before {
  content: "\f2ac";
}
.fa-snapchat-square:before {
  content: "\f2ad";
}
.fa-pied-piper:before {
  content: "\f2ae";
}
.fa-first-order:before {
  content: "\f2b0";
}
.fa-yoast:before {
  content: "\f2b1";
}
.fa-themeisle:before {
  content: "\f2b2";
}
.fa-google-plus-circle:before,
.fa-google-plus-official:before {
  content: "\f2b3";
}
.fa-fa:before,
.fa-font-awesome:before {
  content: "\f2b4";
}
.fa-handshake-o:before {
  content: "\f2b5";
}
.fa-envelope-open:before {
  content: "\f2b6";
}
.fa-envelope-open-o:before {
  content: "\f2b7";
}
.fa-linode:before {
  content: "\f2b8";
}
.fa-address-book:before {
  content: "\f2b9";
}
.fa-address-book-o:before {
  content: "\f2ba";
}
.fa-vcard:before,
.fa-address-card:before {
  content: "\f2bb";
}
.fa-vcard-o:before,
.fa-address-card-o:before {
  content: "\f2bc";
}
.fa-user-circle:before {
  content: "\f2bd";
}
.fa-user-circle-o:before {
  content: "\f2be";
}
.fa-user-o:before {
  content: "\f2c0";
}
.fa-id-badge:before {
  content: "\f2c1";
}
.fa-drivers-license:before,
.fa-id-card:before {
  content: "\f2c2";
}
.fa-drivers-license-o:before,
.fa-id-card-o:before {
  content: "\f2c3";
}
.fa-quora:before {
  content: "\f2c4";
}
.fa-free-code-camp:before {
  content: "\f2c5";
}
.fa-telegram:before {
  content: "\f2c6";
}
.fa-thermometer-4:before,
.fa-thermometer:before,
.fa-thermometer-full:before {
  content: "\f2c7";
}
.fa-thermometer-3:before,
.fa-thermometer-three-quarters:before {
  content: "\f2c8";
}
.fa-thermometer-2:before,
.fa-thermometer-half:before {
  content: "\f2c9";
}
.fa-thermometer-1:before,
.fa-thermometer-quarter:before {
  content: "\f2ca";
}
.fa-thermometer-0:before,
.fa-thermometer-empty:before {
  content: "\f2cb";
}
.fa-shower:before {
  content: "\f2cc";
}
.fa-bathtub:before,
.fa-s15:before,
.fa-bath:before {
  content: "\f2cd";
}
.fa-podcast:before {
  content: "\f2ce";
}
.fa-window-maximize:before {
  content: "\f2d0";
}
.fa-window-minimize:before {
  content: "\f2d1";
}
.fa-window-restore:before {
  content: "\f2d2";
}
.fa-times-rectangle:before,
.fa-window-close:before {
  content: "\f2d3";
}
.fa-times-rectangle-o:before,
.fa-window-close-o:before {
  content: "\f2d4";
}
.fa-bandcamp:before {
  content: "\f2d5";
}
.fa-grav:before {
  content: "\f2d6";
}
.fa-etsy:before {
  content: "\f2d7";
}
.fa-imdb:before {
  content: "\f2d8";
}
.fa-ravelry:before {
  content: "\f2d9";
}
.fa-eercast:before {
  content: "\f2da";
}
.fa-microchip:before {
  content: "\f2db";
}
.fa-snowflake-o:before {
  content: "\f2dc";
}
.fa-superpowers:before {
  content: "\f2dd";
}
.fa-wpexplorer:before {
  content: "\f2de";
}
.fa-meetup:before {
  content: "\f2e0";
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
code {
  color: #000;
}
pre {
  font-size: inherit;
  line-height: inherit;
}
label {
  font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.corner-all {
  border-radius: 2px;
}
.no-padding {
  padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer.  It allows the usage of flexible box 
model layouts accross multiple browsers, including older browsers.  The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below).  Browsers that are known to implement this 
new spec completely include:

    Firefox 28.0+
    Chrome 29.0+
    Internet Explorer 11+ 
    Opera 17.0+

Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.hbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.vbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.vbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
  /* Old browsers */
  -webkit-box-direction: reverse;
  -moz-box-direction: reverse;
  box-direction: reverse;
  /* Modern browsers */
  flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
  width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
  /* Old browsers */
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
  /* Old browsers */
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  box-flex: 2;
  /* Modern browsers */
  flex: 2;
}
.box-group1 {
  /*  Deprecated */
  -webkit-box-flex-group: 1;
  -moz-box-flex-group: 1;
  box-flex-group: 1;
}
.box-group2 {
  /* Deprecated */
  -webkit-box-flex-group: 2;
  -moz-box-flex-group: 2;
  box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
  /* Old browsers */
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  /* Modern browsers */
  justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
  /* Old browsers */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  /* Modern browsers */
  justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
  /* Old browsers */
  -webkit-box-pack: baseline;
  -moz-box-pack: baseline;
  box-pack: baseline;
  /* Modern browsers */
  justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
  /* Old browsers */
  -webkit-box-pack: stretch;
  -moz-box-pack: stretch;
  box-pack: stretch;
  /* Modern browsers */
  justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
  /* Old browsers */
  -webkit-box-align: start;
  -moz-box-align: start;
  box-align: start;
  /* Modern browsers */
  align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
  /* Old browsers */
  -webkit-box-align: end;
  -moz-box-align: end;
  box-align: end;
  /* Modern browsers */
  align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
  /* Old browsers */
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  /* Modern browsers */
  align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
  /* Old browsers */
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
  box-align: baseline;
  /* Modern browsers */
  align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
  /* Old browsers */
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  box-align: stretch;
  /* Modern browsers */
  align-items: stretch;
}
div.error {
  margin: 2em;
  text-align: center;
}
div.error > h1 {
  font-size: 500%;
  line-height: normal;
}
div.error > p {
  font-size: 200%;
  line-height: normal;
}
div.traceback-wrapper {
  text-align: left;
  max-width: 800px;
  margin: auto;
}
div.traceback-wrapper pre.traceback {
  max-height: 600px;
  overflow: auto;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
body {
  background-color: #fff;
  /* This makes sure that the body covers the entire window and needs to
       be in a different element than the display: box in wrapper below */
  position: absolute;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: 0px;
  overflow: visible;
}
body > #header {
  /* Initially hidden to prevent FLOUC */
  display: none;
  background-color: #fff;
  /* Display over codemirror */
  position: relative;
  z-index: 100;
}
body > #header #header-container {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  padding: 5px;
  padding-bottom: 5px;
  padding-top: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
body > #header .header-bar {
  width: 100%;
  height: 1px;
  background: #e7e7e7;
  margin-bottom: -1px;
}
@media print {
  body > #header {
    display: none !important;
  }
}
#header-spacer {
  width: 100%;
  visibility: hidden;
}
@media print {
  #header-spacer {
    display: none;
  }
}
#ipython_notebook {
  padding-left: 0px;
  padding-top: 1px;
  padding-bottom: 1px;
}
[dir="rtl"] #ipython_notebook {
  margin-right: 10px;
  margin-left: 0;
}
[dir="rtl"] #ipython_notebook.pull-left {
  float: right !important;
  float: right;
}
.flex-spacer {
  flex: 1;
}
#noscript {
  width: auto;
  padding-top: 16px;
  padding-bottom: 16px;
  text-align: center;
  font-size: 22px;
  color: red;
  font-weight: bold;
}
#ipython_notebook img {
  height: 28px;
}
#site {
  width: 100%;
  display: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  overflow: auto;
}
@media print {
  #site {
    height: auto !important;
  }
}
/* Smaller buttons */
.ui-button .ui-button-text {
  padding: 0.2em 0.8em;
  font-size: 77%;
}
input.ui-button {
  padding: 0.3em 0.9em;
}
span#kernel_logo_widget {
  margin: 0 10px;
}
span#login_widget {
  float: right;
}
[dir="rtl"] span#login_widget {
  float: left;
}
span#login_widget > .button,
#logout {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
  color: #fff;
  background-color: #333;
}
.nav-header {
  text-transform: none;
}
#header > span {
  margin-top: 10px;
}
.modal_stretch .modal-dialog {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
  max-height: calc(100vh - 200px);
  overflow: auto;
  flex: 1;
}
.modal-header {
  cursor: move;
}
@media (min-width: 768px) {
  .modal .modal-dialog {
    width: 700px;
  }
}
@media (min-width: 768px) {
  select.form-control {
    margin-left: 12px;
    margin-right: 12px;
  }
}
/*!
*
* IPython auth
*
*/
.center-nav {
  display: inline-block;
  margin-bottom: -4px;
}
[dir="rtl"] .center-nav form.pull-left {
  float: right !important;
  float: right;
}
[dir="rtl"] .center-nav .navbar-text {
  float: right;
}
[dir="rtl"] .navbar-inner {
  text-align: right;
}
[dir="rtl"] div.text-left {
  text-align: right;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
  background-color: none;
  display: inline;
}
.alternate_upload.form {
  padding: 0;
  margin: 0;
}
.alternate_upload input.fileinput {
  position: absolute;
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
  cursor: pointer;
  opacity: 0;
  z-index: 2;
}
.alternate_upload .btn-xs > input.fileinput {
  margin: -1px -5px;
}
.alternate_upload .btn-upload {
  position: relative;
  height: 22px;
}
::-webkit-file-upload-button {
  cursor: pointer;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
ul#tabs {
  margin-bottom: 4px;
}
ul#tabs a {
  padding-top: 6px;
  padding-bottom: 4px;
}
[dir="rtl"] ul#tabs.nav-tabs > li {
  float: right;
}
[dir="rtl"] ul#tabs.nav.nav-tabs {
  padding-right: 0;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
  text-decoration: none;
}
ul.breadcrumb i.icon-home {
  font-size: 16px;
  margin-right: 4px;
}
ul.breadcrumb span {
  color: #5e5e5e;
}
.list_toolbar {
  padding: 4px 0 4px 0;
  vertical-align: middle;
}
.list_toolbar .tree-buttons {
  padding-top: 1px;
}
[dir="rtl"] .list_toolbar .tree-buttons .pull-right {
  float: left !important;
  float: left;
}
[dir="rtl"] .list_toolbar .col-sm-4,
[dir="rtl"] .list_toolbar .col-sm-8 {
  float: right;
}
.dynamic-buttons {
  padding-top: 3px;
  display: inline-block;
}
.list_toolbar [class*="span"] {
  min-height: 24px;
}
.list_header {
  font-weight: bold;
  background-color: #EEE;
}
.list_placeholder {
  font-weight: bold;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
}
.list_container {
  margin-top: 4px;
  margin-bottom: 20px;
  border: 1px solid #ddd;
  border-radius: 2px;
}
.list_container > div {
  border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
  background-color: red;
}
.list_container > div:last-child {
  border: none;
}
.list_item:hover .list_item {
  background-color: #ddd;
}
.list_item a {
  text-decoration: none;
}
.list_item:hover {
  background-color: #fafafa;
}
.list_header > div,
.list_item > div {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
.list_header > div input,
.list_item > div input {
  margin-right: 7px;
  margin-left: 14px;
  vertical-align: text-bottom;
  line-height: 22px;
  position: relative;
  top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
  margin-left: -1px;
  vertical-align: baseline;
  line-height: 22px;
}
[dir="rtl"] .list_item > div input {
  margin-right: 0;
}
.new-file input[type=checkbox] {
  visibility: hidden;
}
.item_name {
  line-height: 22px;
  height: 24px;
}
.item_icon {
  font-size: 14px;
  color: #5e5e5e;
  margin-right: 7px;
  margin-left: 7px;
  line-height: 22px;
  vertical-align: baseline;
}
.item_modified {
  margin-right: 7px;
  margin-left: 7px;
}
[dir="rtl"] .item_modified.pull-right {
  float: left !important;
  float: left;
}
.item_buttons {
  line-height: 1em;
  margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
  float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
  margin-left: 5px;
}
.item_buttons .btn {
  min-width: 13ex;
}
.item_buttons .running-indicator {
  padding-top: 4px;
  color: #5cb85c;
}
.item_buttons .kernel-name {
  padding-top: 4px;
  color: #5bc0de;
  margin-right: 7px;
  float: left;
}
[dir="rtl"] .item_buttons.pull-right {
  float: left !important;
  float: left;
}
[dir="rtl"] .item_buttons .kernel-name {
  margin-left: 7px;
  float: right;
}
.toolbar_info {
  height: 24px;
  line-height: 24px;
}
.list_item input:not([type=checkbox]) {
  padding-top: 3px;
  padding-bottom: 3px;
  height: 22px;
  line-height: 14px;
  margin: 0px;
}
.highlight_text {
  color: blue;
}
#project_name {
  display: inline-block;
  padding-left: 7px;
  margin-left: -2px;
}
#project_name > .breadcrumb {
  padding: 0px;
  margin-bottom: 0px;
  background-color: transparent;
  font-weight: bold;
}
.sort_button {
  display: inline-block;
  padding-left: 7px;
}
[dir="rtl"] .sort_button.pull-right {
  float: left !important;
  float: left;
}
#tree-selector {
  padding-right: 0px;
}
#button-select-all {
  min-width: 50px;
}
[dir="rtl"] #button-select-all.btn {
  float: right ;
}
#select-all {
  margin-left: 7px;
  margin-right: 2px;
  margin-top: 2px;
  height: 16px;
}
[dir="rtl"] #select-all.pull-left {
  float: right !important;
  float: right;
}
.menu_icon {
  margin-right: 2px;
}
.tab-content .row {
  margin-left: 0px;
  margin-right: 0px;
}
.folder_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f114";
}
.folder_icon:before.fa-pull-left {
  margin-right: .3em;
}
.folder_icon:before.fa-pull-right {
  margin-left: .3em;
}
.folder_icon:before.pull-left {
  margin-right: .3em;
}
.folder_icon:before.pull-right {
  margin-left: .3em;
}
.notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
}
.notebook_icon:before.fa-pull-left {
  margin-right: .3em;
}
.notebook_icon:before.fa-pull-right {
  margin-left: .3em;
}
.notebook_icon:before.pull-left {
  margin-right: .3em;
}
.notebook_icon:before.pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
  color: #5cb85c;
}
.running_notebook_icon:before.fa-pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.fa-pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before.pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
  margin-left: .3em;
}
.file_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f016";
  position: relative;
  top: -2px;
}
.file_icon:before.fa-pull-left {
  margin-right: .3em;
}
.file_icon:before.fa-pull-right {
  margin-left: .3em;
}
.file_icon:before.pull-left {
  margin-right: .3em;
}
.file_icon:before.pull-right {
  margin-left: .3em;
}
#notebook_toolbar .pull-right {
  padding-top: 0px;
  margin-right: -1px;
}
ul#new-menu {
  left: auto;
  right: 0;
}
#new-menu .dropdown-header {
  font-size: 10px;
  border-bottom: 1px solid #e5e5e5;
  padding: 0 0 3px;
  margin: -3px 20px 0;
}
.kernel-menu-icon {
  padding-right: 12px;
  width: 24px;
  content: "\f096";
}
.kernel-menu-icon:before {
  content: "\f096";
}
.kernel-menu-icon-current:before {
  content: "\f00c";
}
#tab_content {
  padding-top: 20px;
}
#running .panel-group .panel {
  margin-top: 3px;
  margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
  background-color: #EEE;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
  text-decoration: none;
}
#running .panel-group .panel .panel-body {
  padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
  margin-top: 0px;
  margin-bottom: 0px;
  border: 0px;
  border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
  border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
  border-bottom: 0px;
}
.delete-button {
  display: none;
}
.duplicate-button {
  display: none;
}
.rename-button {
  display: none;
}
.move-button {
  display: none;
}
.download-button {
  display: none;
}
.shutdown-button {
  display: none;
}
.dynamic-instructions {
  display: inline-block;
  padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
  padding: 0px 5px;
}
.selected-keymap i.fa:before {
  content: "\f00c";
}
#mode-menu {
  overflow: auto;
  max-height: 20em;
}
.edit_app #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
  /* Use a negative 1 bottom margin, so the border overlaps the border of the
    header */
  margin-bottom: -1px;
}
.dirty-indicator {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator.fa-pull-left {
  margin-right: .3em;
}
.dirty-indicator.fa-pull-right {
  margin-left: .3em;
}
.dirty-indicator.pull-left {
  margin-right: .3em;
}
.dirty-indicator.pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-dirty.fa-pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.fa-pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty.pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-clean.fa-pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.fa-pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f00c";
}
.dirty-indicator-clean:before.fa-pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.fa-pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
  margin-left: .3em;
}
#filename {
  font-size: 16pt;
  display: table;
  padding: 0px 5px;
}
#current-mode {
  padding-left: 5px;
  padding-right: 5px;
}
#texteditor-backdrop {
  padding-top: 20px;
  padding-bottom: 20px;
}
@media not print {
  #texteditor-backdrop {
    background-color: #EEE;
  }
}
@media print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container {
    padding: 0px;
    background-color: #fff;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
.CodeMirror-dialog {
  background-color: #fff;
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI escape sequences */
/* The color values are a mix of
   http://www.xcolors.net/dl/baskerville-ivorylight and
   http://www.xcolors.net/dl/euphrasia */
.ansi-black-fg {
  color: #3E424D;
}
.ansi-black-bg {
  background-color: #3E424D;
}
.ansi-black-intense-fg {
  color: #282C36;
}
.ansi-black-intense-bg {
  background-color: #282C36;
}
.ansi-red-fg {
  color: #E75C58;
}
.ansi-red-bg {
  background-color: #E75C58;
}
.ansi-red-intense-fg {
  color: #B22B31;
}
.ansi-red-intense-bg {
  background-color: #B22B31;
}
.ansi-green-fg {
  color: #00A250;
}
.ansi-green-bg {
  background-color: #00A250;
}
.ansi-green-intense-fg {
  color: #007427;
}
.ansi-green-intense-bg {
  background-color: #007427;
}
.ansi-yellow-fg {
  color: #DDB62B;
}
.ansi-yellow-bg {
  background-color: #DDB62B;
}
.ansi-yellow-intense-fg {
  color: #B27D12;
}
.ansi-yellow-intense-bg {
  background-color: #B27D12;
}
.ansi-blue-fg {
  color: #208FFB;
}
.ansi-blue-bg {
  background-color: #208FFB;
}
.ansi-blue-intense-fg {
  color: #0065CA;
}
.ansi-blue-intense-bg {
  background-color: #0065CA;
}
.ansi-magenta-fg {
  color: #D160C4;
}
.ansi-magenta-bg {
  background-color: #D160C4;
}
.ansi-magenta-intense-fg {
  color: #A03196;
}
.ansi-magenta-intense-bg {
  background-color: #A03196;
}
.ansi-cyan-fg {
  color: #60C6C8;
}
.ansi-cyan-bg {
  background-color: #60C6C8;
}
.ansi-cyan-intense-fg {
  color: #258F8F;
}
.ansi-cyan-intense-bg {
  background-color: #258F8F;
}
.ansi-white-fg {
  color: #C5C1B4;
}
.ansi-white-bg {
  background-color: #C5C1B4;
}
.ansi-white-intense-fg {
  color: #A1A6B2;
}
.ansi-white-intense-bg {
  background-color: #A1A6B2;
}
.ansi-default-inverse-fg {
  color: #FFFFFF;
}
.ansi-default-inverse-bg {
  background-color: #000000;
}
.ansi-bold {
  font-weight: bold;
}
.ansi-underline {
  text-decoration: underline;
}
/* The following styles are deprecated an will be removed in a future version */
.ansibold {
  font-weight: bold;
}
.ansi-inverse {
  outline: 0.5px dotted;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
  color: black;
}
.ansired {
  color: darkred;
}
.ansigreen {
  color: darkgreen;
}
.ansiyellow {
  color: #c4a000;
}
.ansiblue {
  color: darkblue;
}
.ansipurple {
  color: darkviolet;
}
.ansicyan {
  color: steelblue;
}
.ansigray {
  color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
  background-color: black;
}
.ansibgred {
  background-color: red;
}
.ansibggreen {
  background-color: green;
}
.ansibgyellow {
  background-color: yellow;
}
.ansibgblue {
  background-color: blue;
}
.ansibgpurple {
  background-color: magenta;
}
.ansibgcyan {
  background-color: cyan;
}
.ansibggray {
  background-color: gray;
}
div.cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 2px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  border-color: transparent;
  width: 100%;
  padding: 5px;
  /* This acts as a spacer between cells, that is outside the border */
  margin: 0px;
  outline: none;
  position: relative;
  overflow: visible;
}
div.cell:before {
  position: absolute;
  display: block;
  top: -1px;
  left: -1px;
  width: 5px;
  height: calc(100% +  2px);
  content: '';
  background: transparent;
}
div.cell.jupyter-soft-selected {
  border-left-color: #E3F2FD;
  border-left-width: 1px;
  padding-left: 5px;
  border-right-color: #E3F2FD;
  border-right-width: 1px;
  background: #E3F2FD;
}
@media print {
  div.cell.jupyter-soft-selected {
    border-color: transparent;
  }
}
div.cell.selected,
div.cell.selected.jupyter-soft-selected {
  border-color: #ababab;
}
div.cell.selected:before,
div.cell.selected.jupyter-soft-selected:before {
  position: absolute;
  display: block;
  top: -1px;
  left: -1px;
  width: 5px;
  height: calc(100% +  2px);
  content: '';
  background: #42A5F5;
}
@media print {
  div.cell.selected,
  div.cell.selected.jupyter-soft-selected {
    border-color: transparent;
  }
}
.edit_mode div.cell.selected {
  border-color: #66BB6A;
}
.edit_mode div.cell.selected:before {
  position: absolute;
  display: block;
  top: -1px;
  left: -1px;
  width: 5px;
  height: calc(100% +  2px);
  content: '';
  background: #66BB6A;
}
@media print {
  .edit_mode div.cell.selected {
    border-color: transparent;
  }
}
.prompt {
  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  min-width: 14ex;
  /* This padding is tuned to match the padding on the CodeMirror editor. */
  padding: 0.4em;
  margin: 0px;
  font-family: monospace;
  text-align: right;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
  /* Don't highlight prompt number selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* Use default cursor */
  cursor: default;
}
@media (max-width: 540px) {
  .prompt {
    text-align: left;
  }
}
div.inner_cell {
  min-width: 0;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
  border: 1px solid #cfcfcf;
  border-radius: 2px;
  background: #f7f7f7;
  line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
   is no content in the output_subarea and the prompt. The main purpose of this is
   to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
  padding-top: 0;
  padding-bottom: 0;
}
div.unrecognized_cell {
  padding: 5px 5px 5px 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.unrecognized_cell .inner_cell {
  border-radius: 2px;
  padding: 5px;
  font-weight: bold;
  color: red;
  border: 1px solid #cfcfcf;
  background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
  color: inherit;
  text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
  color: inherit;
  text-decoration: none;
}
@media (max-width: 540px) {
  div.unrecognized_cell > div.prompt {
    display: none;
  }
}
div.code_cell {
  /* avoid page breaking on code cells when printing */
}
@media print {
  div.code_cell {
    page-break-inside: avoid;
  }
}
/* any special styling for code cells that are currently running goes here */
div.input {
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.input {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
  color: #303F9F;
  border-top: 1px solid transparent;
}
div.input_area > div.highlight {
  margin: 0.4em;
  border: none;
  padding: 0px;
  background-color: transparent;
}
div.input_area > div.highlight > pre {
  margin: 0px;
  border: none;
  padding: 0px;
  background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
 * monospace font with inconsistent normal/bold/italic height.  See
 * notebookmain.js.  Such fonts will have keywords vertically offset with
 * respect to the rest of the text.  The user should select a better font.
 * See: https://github.com/ipython/ipython/issues/1503
 *
 * .CodeMirror span {
 *      vertical-align: bottom;
 * }
 */
.CodeMirror {
  line-height: 1.21429em;
  /* Changed from 1em to our global default */
  font-size: 14px;
  height: auto;
  /* Changed to auto to autogrow */
  background: none;
  /* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  overflow-y: hidden;
  overflow-x: auto;
}
.CodeMirror-lines {
  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  /* we have set a different line-height and want this to scale with that. */
  /* Note that this should set vertical padding only, since CodeMirror assumes
       that horizontal padding will be set on CodeMirror pre */
  padding: 0.4em 0;
}
.CodeMirror-linenumber {
  padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.CodeMirror pre {
  /* In CM3 this went to 4px from 0 in CM2. This sets horizontal padding only,
    use .CodeMirror-lines for vertical */
  padding: 0 0.4em;
  border: 0;
  border-radius: 0;
}
.CodeMirror-cursor {
  border-left: 1.4px solid black;
}
@media screen and (min-width: 2138px) and (max-width: 4319px) {
  .CodeMirror-cursor {
    border-left: 2px solid black;
  }
}
@media screen and (min-width: 4320px) {
  .CodeMirror-cursor {
    border-left: 4px solid black;
  }
}
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme

*/
.highlight-base {
  color: #000;
}
.highlight-variable {
  color: #000;
}
.highlight-variable-2 {
  color: #1a1a1a;
}
.highlight-variable-3 {
  color: #333333;
}
.highlight-string {
  color: #BA2121;
}
.highlight-comment {
  color: #408080;
  font-style: italic;
}
.highlight-number {
  color: #080;
}
.highlight-atom {
  color: #88F;
}
.highlight-keyword {
  color: #008000;
  font-weight: bold;
}
.highlight-builtin {
  color: #008000;
}
.highlight-error {
  color: #f00;
}
.highlight-operator {
  color: #AA22FF;
  font-weight: bold;
}
.highlight-meta {
  color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
  color: #00f;
}
.highlight-string-2 {
  color: #f50;
}
.highlight-qualifier {
  color: #555;
}
.highlight-bracket {
  color: #997;
}
.highlight-tag {
  color: #170;
}
.highlight-attribute {
  color: #00c;
}
.highlight-header {
  color: blue;
}
.highlight-quote {
  color: #090;
}
.highlight-link {
  color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
  color: #008000;
  font-weight: bold;
}
.cm-s-ipython span.cm-atom {
  color: #88F;
}
.cm-s-ipython span.cm-number {
  color: #080;
}
.cm-s-ipython span.cm-def {
  color: #00f;
}
.cm-s-ipython span.cm-variable {
  color: #000;
}
.cm-s-ipython span.cm-operator {
  color: #AA22FF;
  font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
  color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
  color: #333333;
}
.cm-s-ipython span.cm-comment {
  color: #408080;
  font-style: italic;
}
.cm-s-ipython span.cm-string {
  color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
  color: #f50;
}
.cm-s-ipython span.cm-meta {
  color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
  color: #555;
}
.cm-s-ipython span.cm-builtin {
  color: #008000;
}
.cm-s-ipython span.cm-bracket {
  color: #997;
}
.cm-s-ipython span.cm-tag {
  color: #170;
}
.cm-s-ipython span.cm-attribute {
  color: #00c;
}
.cm-s-ipython span.cm-header {
  color: blue;
}
.cm-s-ipython span.cm-quote {
  color: #090;
}
.cm-s-ipython span.cm-link {
  color: #00c;
}
.cm-s-ipython span.cm-error {
  color: #f00;
}
.cm-s-ipython span.cm-tab {
  background: url();
  background-position: right;
  background-repeat: no-repeat;
}
div.output_wrapper {
  /* this position must be relative to enable descendents to be absolute within it */
  position: relative;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
  /* ideally, this would be max-height, but FF barfs all over that */
  height: 24em;
  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  width: 100%;
  overflow: auto;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
  margin: 0px;
  padding: 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
div.out_prompt_overlay {
  height: 100%;
  padding: 0px 0.4em;
  position: absolute;
  border-radius: 2px;
}
div.out_prompt_overlay:hover {
  /* use inner shadow to get border that is computed the same on WebKit/FF */
  -webkit-box-shadow: inset 0 0 1px #000;
  box-shadow: inset 0 0 1px #000;
  background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
  color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
  padding: 0px;
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.output_area .MathJax_Display {
  text-align: left !important;
}
div.output_area .rendered_html table {
  margin-left: 0;
  margin-right: 0;
}
div.output_area .rendered_html img {
  margin-left: 0;
  margin-right: 0;
}
div.output_area img,
div.output_area svg {
  max-width: 100%;
  height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
  max-width: none;
}
div.output_area .mglyph > img {
  max-width: none;
}
/* This is needed to protect the pre formating from global settings such
   as that of bootstrap */
.output {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.output_area {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
div.output_area pre {
  margin: 0;
  padding: 1px 0 1px 0;
  border: 0;
  vertical-align: baseline;
  color: black;
  background-color: transparent;
  border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
   the prompt div. */
div.output_subarea {
  overflow-x: auto;
  padding: 0.4em;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
  max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
  overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
   output types */
/* all text output has this class: */
div.output_text {
  text-align: left;
  color: #000;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
  background: #fdd;
  /* very light red background for stderr */
}
div.output_latex {
  text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
  padding: 0;
}
.js-error {
  color: darkred;
}
/* raw_input styles */
div.raw_input_container {
  line-height: 1.21429em;
  padding-top: 5px;
}
pre.raw_input_prompt {
  /* nothing needed here. */
}
input.raw_input {
  font-family: monospace;
  font-size: inherit;
  color: inherit;
  width: auto;
  /* make sure input baseline aligns with prompt */
  vertical-align: baseline;
  /* padding + margin = 0.5em between prompt and cursor */
  padding: 0em 0.25em;
  margin: 0em 0.25em;
}
input.raw_input:focus {
  box-shadow: none;
}
p.p-space {
  margin-bottom: 10px;
}
div.output_unrecognized {
  padding: 5px;
  font-weight: bold;
  color: red;
}
div.output_unrecognized a {
  color: inherit;
  text-decoration: none;
}
div.output_unrecognized a:hover {
  color: inherit;
  text-decoration: none;
}
.rendered_html {
  color: #000;
  /* any extras will just be numbers: */
}
.rendered_html em {
  font-style: italic;
}
.rendered_html strong {
  font-weight: bold;
}
.rendered_html u {
  text-decoration: underline;
}
.rendered_html :link {
  text-decoration: underline;
}
.rendered_html :visited {
  text-decoration: underline;
}
.rendered_html h1 {
  font-size: 185.7%;
  margin: 1.08em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h2 {
  font-size: 157.1%;
  margin: 1.27em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h3 {
  font-size: 128.6%;
  margin: 1.55em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h4 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h5 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h6 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h1:first-child {
  margin-top: 0.538em;
}
.rendered_html h2:first-child {
  margin-top: 0.636em;
}
.rendered_html h3:first-child {
  margin-top: 0.777em;
}
.rendered_html h4:first-child {
  margin-top: 1em;
}
.rendered_html h5:first-child {
  margin-top: 1em;
}
.rendered_html h6:first-child {
  margin-top: 1em;
}
.rendered_html ul:not(.list-inline),
.rendered_html ol:not(.list-inline) {
  padding-left: 2em;
}
.rendered_html ul {
  list-style: disc;
}
.rendered_html ul ul {
  list-style: square;
  margin-top: 0;
}
.rendered_html ul ul ul {
  list-style: circle;
}
.rendered_html ol {
  list-style: decimal;
}
.rendered_html ol ol {
  list-style: upper-alpha;
  margin-top: 0;
}
.rendered_html ol ol ol {
  list-style: lower-alpha;
}
.rendered_html ol ol ol ol {
  list-style: lower-roman;
}
.rendered_html ol ol ol ol ol {
  list-style: decimal;
}
.rendered_html * + ul {
  margin-top: 1em;
}
.rendered_html * + ol {
  margin-top: 1em;
}
.rendered_html hr {
  color: black;
  background-color: black;
}
.rendered_html pre {
  margin: 1em 2em;
  padding: 0px;
  background-color: #fff;
}
.rendered_html code {
  background-color: #eff0f1;
}
.rendered_html p code {
  padding: 1px 5px;
}
.rendered_html pre code {
  background-color: #fff;
}
.rendered_html pre,
.rendered_html code {
  border: 0;
  color: #000;
  font-size: 100%;
}
.rendered_html blockquote {
  margin: 1em 2em;
}
.rendered_html table {
  margin-left: auto;
  margin-right: auto;
  border: none;
  border-collapse: collapse;
  border-spacing: 0;
  color: black;
  font-size: 12px;
  table-layout: fixed;
}
.rendered_html thead {
  border-bottom: 1px solid black;
  vertical-align: bottom;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
  text-align: right;
  vertical-align: middle;
  padding: 0.5em 0.5em;
  line-height: normal;
  white-space: normal;
  max-width: none;
  border: none;
}
.rendered_html th {
  font-weight: bold;
}
.rendered_html tbody tr:nth-child(odd) {
  background: #f5f5f5;
}
.rendered_html tbody tr:hover {
  background: rgba(66, 165, 245, 0.2);
}
.rendered_html * + table {
  margin-top: 1em;
}
.rendered_html p {
  text-align: left;
}
.rendered_html * + p {
  margin-top: 1em;
}
.rendered_html img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.rendered_html * + img {
  margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
  max-width: 100%;
  height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
  max-width: none;
}
.rendered_html .alert {
  margin-bottom: initial;
}
.rendered_html * + .alert {
  margin-top: 1em;
}
[dir="rtl"] .rendered_html p {
  text-align: right;
}
div.text_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.text_cell > div.prompt {
    display: none;
  }
}
div.text_cell_render {
  /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
  outline: none;
  resize: none;
  width: inherit;
  border-style: none;
  padding: 0.5em 0.5em 0.5em 0.4em;
  color: #000;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
a.anchor-link:link {
  text-decoration: none;
  padding: 0px 20px;
  visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
  visibility: visible;
}
.text_cell.rendered .input_area {
  display: none;
}
.text_cell.rendered .rendered_html {
  overflow-x: auto;
  overflow-y: hidden;
}
.text_cell.rendered .rendered_html tr,
.text_cell.rendered .rendered_html th,
.text_cell.rendered .rendered_html td {
  max-width: none;
}
.text_cell.unrendered .text_cell_render {
  display: none;
}
.text_cell .dropzone .input_area {
  border: 2px dashed #bababa;
  margin: -1px;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
  font-weight: bold;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
  font-size: 185.7%;
}
.cm-header-2 {
  font-size: 157.1%;
}
.cm-header-3 {
  font-size: 128.6%;
}
.cm-header-4 {
  font-size: 110%;
}
.cm-header-5 {
  font-size: 100%;
  font-style: italic;
}
.cm-header-6 {
  font-size: 100%;
  font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
  .notebook_app {
    padding-left: 0px;
    padding-right: 0px;
  }
}
#ipython-main-app {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook_panel {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook {
  font-size: 14px;
  line-height: 20px;
  overflow-y: hidden;
  overflow-x: auto;
  width: 100%;
  /* This spaces the page away from the edge of the notebook area */
  padding-top: 20px;
  margin: 0px;
  outline: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  min-height: 100%;
}
@media not print {
  #notebook-container {
    padding: 15px;
    background-color: #fff;
    min-height: 0;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
@media print {
  #notebook-container {
    width: 100%;
  }
}
div.ui-widget-content {
  border: 1px solid #ababab;
  outline: none;
}
pre.dialog {
  background-color: #f7f7f7;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0.4em;
  padding-left: 2em;
}
p.dialog {
  padding: 0.2em;
}
/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems
   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.
 */
pre,
code,
kbd,
samp {
  white-space: pre-wrap;
}
#fonttest {
  font-family: monospace;
}
p {
  margin-bottom: 0;
}
.end_space {
  min-height: 100px;
  transition: height .2s ease;
}
.notebook_app > #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
  .notebook_app {
    background-color: #EEE;
  }
}
kbd {
  border-style: solid;
  border-width: 1px;
  box-shadow: none;
  margin: 2px;
  padding-left: 2px;
  padding-right: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
.jupyter-keybindings {
  padding: 1px;
  line-height: 24px;
  border-bottom: 1px solid gray;
}
.jupyter-keybindings input {
  margin: 0;
  padding: 0;
  border: none;
}
.jupyter-keybindings i {
  padding: 6px;
}
.well code {
  background-color: #ffffff;
  border-color: #ababab;
  border-width: 1px;
  border-style: solid;
  padding: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
  border: thin solid #CFCFCF;
  border-bottom: none;
  background: #EEE;
  border-radius: 2px 2px 0px 0px;
  width: 100%;
  height: 29px;
  padding-right: 4px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
  display: -webkit-flex;
}
@media print {
  .celltoolbar {
    display: none;
  }
}
.ctb_hideshow {
  display: none;
  vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
   Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
  display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border-top-right-radius: 0px;
  border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border: 1px solid #cfcfcf;
}
.celltoolbar {
  font-size: 87%;
  padding-top: 3px;
}
.celltoolbar select {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  width: inherit;
  font-size: inherit;
  height: 22px;
  padding: 0px;
  display: inline-block;
}
.celltoolbar select:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
  color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
  color: #999;
}
.celltoolbar select::-ms-expand {
  border: 0;
  background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
  background-color: #eeeeee;
  opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
  cursor: not-allowed;
}
textarea.celltoolbar select {
  height: auto;
}
select.celltoolbar select {
  height: 30px;
  line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
  height: auto;
}
.celltoolbar label {
  margin-left: 5px;
  margin-right: 5px;
}
.tags_button_container {
  width: 100%;
  display: flex;
}
.tag-container {
  display: flex;
  flex-direction: row;
  flex-grow: 1;
  overflow: hidden;
  position: relative;
}
.tag-container > * {
  margin: 0 4px;
}
.remove-tag-btn {
  margin-left: 4px;
}
.tags-input {
  display: flex;
}
.cell-tag:last-child:after {
  content: "";
  position: absolute;
  right: 0;
  width: 40px;
  height: 100%;
  /* Fade to background color of cell toolbar */
  background: linear-gradient(to right, rgba(0, 0, 0, 0), #EEE);
}
.tags-input > * {
  margin-left: 4px;
}
.cell-tag,
.tags-input input,
.tags-input button {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  box-shadow: none;
  width: inherit;
  font-size: inherit;
  height: 22px;
  line-height: 22px;
  padding: 0px 4px;
  display: inline-block;
}
.cell-tag:focus,
.tags-input input:focus,
.tags-input button:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.cell-tag::-moz-placeholder,
.tags-input input::-moz-placeholder,
.tags-input button::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.cell-tag:-ms-input-placeholder,
.tags-input input:-ms-input-placeholder,
.tags-input button:-ms-input-placeholder {
  color: #999;
}
.cell-tag::-webkit-input-placeholder,
.tags-input input::-webkit-input-placeholder,
.tags-input button::-webkit-input-placeholder {
  color: #999;
}
.cell-tag::-ms-expand,
.tags-input input::-ms-expand,
.tags-input button::-ms-expand {
  border: 0;
  background-color: transparent;
}
.cell-tag[disabled],
.tags-input input[disabled],
.tags-input button[disabled],
.cell-tag[readonly],
.tags-input input[readonly],
.tags-input button[readonly],
fieldset[disabled] .cell-tag,
fieldset[disabled] .tags-input input,
fieldset[disabled] .tags-input button {
  background-color: #eeeeee;
  opacity: 1;
}
.cell-tag[disabled],
.tags-input input[disabled],
.tags-input button[disabled],
fieldset[disabled] .cell-tag,
fieldset[disabled] .tags-input input,
fieldset[disabled] .tags-input button {
  cursor: not-allowed;
}
textarea.cell-tag,
textarea.tags-input input,
textarea.tags-input button {
  height: auto;
}
select.cell-tag,
select.tags-input input,
select.tags-input button {
  height: 30px;
  line-height: 30px;
}
textarea.cell-tag,
textarea.tags-input input,
textarea.tags-input button,
select[multiple].cell-tag,
select[multiple].tags-input input,
select[multiple].tags-input button {
  height: auto;
}
.cell-tag,
.tags-input button {
  padding: 0px 4px;
}
.cell-tag {
  background-color: #fff;
  white-space: nowrap;
}
.tags-input input[type=text]:focus {
  outline: none;
  box-shadow: none;
  border-color: #ccc;
}
.completions {
  position: absolute;
  z-index: 110;
  overflow: hidden;
  border: 1px solid #ababab;
  border-radius: 2px;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  line-height: 1;
}
.completions select {
  background: white;
  outline: none;
  border: none;
  padding: 0px;
  margin: 0px;
  overflow: auto;
  font-family: monospace;
  font-size: 110%;
  color: #000;
  width: auto;
}
.completions select option.context {
  color: #286090;
}
#kernel_logo_widget .current_kernel_logo {
  display: none;
  margin-top: -1px;
  margin-bottom: -1px;
  width: 32px;
  height: 32px;
}
[dir="rtl"] #kernel_logo_widget {
  float: left !important;
  float: left;
}
.modal .modal-body .move-path {
  display: flex;
  flex-direction: row;
  justify-content: space;
  align-items: center;
}
.modal .modal-body .move-path .server-root {
  padding-right: 20px;
}
.modal .modal-body .move-path .path-input {
  flex: 1;
}
#menubar {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin-top: 1px;
}
#menubar .navbar {
  border-top: 1px;
  border-radius: 0px 0px 2px 2px;
  margin-bottom: 0px;
}
#menubar .navbar-toggle {
  float: left;
  padding-top: 7px;
  padding-bottom: 7px;
  border: none;
}
#menubar .navbar-collapse {
  clear: left;
}
[dir="rtl"] #menubar .navbar-toggle {
  float: right;
}
[dir="rtl"] #menubar .navbar-collapse {
  clear: right;
}
[dir="rtl"] #menubar .navbar-nav {
  float: right;
}
[dir="rtl"] #menubar .nav {
  padding-right: 0px;
}
[dir="rtl"] #menubar .navbar-nav > li {
  float: right;
}
[dir="rtl"] #menubar .navbar-right {
  float: left !important;
}
[dir="rtl"] ul.dropdown-menu {
  text-align: right;
  left: auto;
}
[dir="rtl"] ul#new-menu.dropdown-menu {
  right: auto;
  left: 0;
}
.nav-wrapper {
  border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
  padding-top: 4px;
}
[dir="rtl"] i.menu-icon.pull-right {
  float: left !important;
  float: left;
}
ul#help_menu li a {
  overflow: hidden;
  padding-right: 2.2em;
}
ul#help_menu li a i {
  margin-right: -1.2em;
}
[dir="rtl"] ul#help_menu li a {
  padding-left: 2.2em;
}
[dir="rtl"] ul#help_menu li a i {
  margin-right: 0;
  margin-left: -1.2em;
}
[dir="rtl"] ul#help_menu li a i.pull-right {
  float: left !important;
  float: left;
}
.dropdown-submenu {
  position: relative;
}
.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
}
[dir="rtl"] .dropdown-submenu > .dropdown-menu {
  right: 100%;
  margin-right: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}
.dropdown-submenu > a:after {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: block;
  content: "\f0da";
  float: right;
  color: #333333;
  margin-top: 2px;
  margin-right: -10px;
}
.dropdown-submenu > a:after.fa-pull-left {
  margin-right: .3em;
}
.dropdown-submenu > a:after.fa-pull-right {
  margin-left: .3em;
}
.dropdown-submenu > a:after.pull-left {
  margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
  margin-left: .3em;
}
[dir="rtl"] .dropdown-submenu > a:after {
  float: left;
  content: "\f0d9";
  margin-right: 0;
  margin-left: -10px;
}
.dropdown-submenu:hover > a:after {
  color: #262626;
}
.dropdown-submenu.pull-left {
  float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
  left: -100%;
  margin-left: 10px;
}
#notification_area {
  float: right !important;
  float: right;
  z-index: 10;
}
[dir="rtl"] #notification_area {
  float: left !important;
  float: left;
}
.indicator_area {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
[dir="rtl"] .indicator_area {
  float: left !important;
  float: left;
}
#kernel_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
  padding-left: 5px;
  padding-right: 5px;
}
[dir="rtl"] #kernel_indicator {
  float: left !important;
  float: left;
  border-left: 0;
  border-right: 1px solid;
}
#modal_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
[dir="rtl"] #modal_indicator {
  float: left !important;
  float: left;
}
#readonly-indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  margin-top: 2px;
  margin-bottom: 0px;
  margin-left: 0px;
  margin-right: 0px;
  display: none;
}
.modal_indicator:before {
  width: 1.28571429em;
  text-align: center;
}
.edit_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f040";
}
.edit_mode .modal_indicator:before.fa-pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.fa-pull-right {
  margin-left: .3em;
}
.edit_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: ' ';
}
.command_mode .modal_indicator:before.fa-pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.fa-pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f10c";
}
.kernel_idle_icon:before.fa-pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.fa-pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f111";
}
.kernel_busy_icon:before.fa-pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.fa-pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f1e2";
}
.kernel_dead_icon:before.fa-pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.fa-pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f127";
}
.kernel_disconnected_icon:before.fa-pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.fa-pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
  margin-left: .3em;
}
.notification_widget {
  color: #777;
  z-index: 10;
  background: rgba(240, 240, 240, 0.5);
  margin-right: 4px;
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.notification_widget:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget .badge {
  color: #fff;
  background-color: #333;
}
.notification_widget.warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.notification_widget.warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.notification_widget.success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.notification_widget.success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.notification_widget.info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.notification_widget.info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.notification_widget.danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.notification_widget.danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger .badge {
  color: #d9534f;
  background-color: #fff;
}
div#pager {
  background-color: #fff;
  font-size: 14px;
  line-height: 20px;
  overflow: hidden;
  display: none;
  position: fixed;
  bottom: 0px;
  width: 100%;
  max-height: 50%;
  padding-top: 8px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  /* Display over codemirror */
  z-index: 100;
  /* Hack which prevents jquery ui resizable from changing top. */
  top: auto !important;
}
div#pager pre {
  line-height: 1.21429em;
  color: #000;
  background-color: #f7f7f7;
  padding: 0.4em;
}
div#pager #pager-button-area {
  position: absolute;
  top: 8px;
  right: 20px;
}
div#pager #pager-contents {
  position: relative;
  overflow: auto;
  width: 100%;
  height: 100%;
}
div#pager #pager-contents #pager-container {
  position: relative;
  padding: 15px 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
  top: 0px;
  height: 8px;
  background: #f7f7f7;
  border-top: 1px solid #cfcfcf;
  border-bottom: 1px solid #cfcfcf;
  /* This injects handle bars (a short, wide = symbol) for 
        the resize handle. */
}
div#pager .ui-resizable-handle::after {
  content: '';
  top: 2px;
  left: 50%;
  height: 3px;
  width: 30px;
  margin-left: -15px;
  position: absolute;
  border-top: 1px solid #cfcfcf;
}
.quickhelp {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  line-height: 1.8em;
}
.shortcut_key {
  display: inline-block;
  width: 21ex;
  text-align: right;
  font-family: monospace;
}
.shortcut_descr {
  display: inline-block;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
span.save_widget {
  height: 30px;
  margin-top: 4px;
  display: flex;
  justify-content: flex-start;
  align-items: baseline;
  width: 50%;
  flex: 1;
}
span.save_widget span.filename {
  height: 100%;
  line-height: 1em;
  margin-left: 16px;
  border: none;
  font-size: 146.5%;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
  border-radius: 2px;
}
span.save_widget span.filename:hover {
  background-color: #e6e6e6;
}
[dir="rtl"] span.save_widget.pull-left {
  float: right !important;
  float: right;
}
[dir="rtl"] span.save_widget span.filename {
  margin-left: 0;
  margin-right: 16px;
}
span.checkpoint_status,
span.autosave_status {
  font-size: small;
  white-space: nowrap;
  padding: 0 5px;
}
@media (max-width: 767px) {
  span.save_widget {
    font-size: small;
    padding: 0 0 0 5px;
  }
  span.checkpoint_status,
  span.autosave_status {
    display: none;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  span.checkpoint_status {
    display: none;
  }
  span.autosave_status {
    font-size: x-small;
  }
}
.toolbar {
  padding: 0px;
  margin-left: -5px;
  margin-top: 2px;
  margin-bottom: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
  width: auto;
  vertical-align: middle;
  margin-right: 2px;
  margin-bottom: 0px;
  display: inline;
  font-size: 92%;
  margin-left: 0.3em;
  margin-right: 0.3em;
  padding: 0px;
  padding-top: 3px;
}
.toolbar .btn {
  padding: 2px 8px;
}
.toolbar .btn-group {
  margin-top: 0px;
  margin-left: 5px;
}
.toolbar-btn-label {
  margin-left: 6px;
}
#maintoolbar {
  margin-bottom: -3px;
  margin-top: -8px;
  border: 0px;
  min-height: 27px;
  margin-left: 0px;
  padding-top: 11px;
  padding-bottom: 3px;
}
#maintoolbar .navbar-text {
  float: none;
  vertical-align: middle;
  text-align: right;
  margin-left: 5px;
  margin-right: 0px;
  margin-top: 0px;
}
.select-xs {
  height: 24px;
}
[dir="rtl"] .btn-group > .btn,
.btn-group-vertical > .btn {
  float: right;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
  background-color: #F37626;
  color: white;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
 * of chance of beeing generated from the ../less/[samename].less file, you can
 * try to get back the less file by reverting somme commit in history
 **/
/*
 * We'll try to get something pretty, so we
 * have some strange css to have the scroll bar on
 * the left with fix button on the top right of the tooltip
 */
@-moz-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-moz-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*properties of tooltip after "expand"*/
.bigtooltip {
  overflow: auto;
  height: 200px;
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
  text-overflow: ellipsis;
  overflow: hidden;
  height: 80px;
}
.tooltipbuttons {
  position: absolute;
  padding-right: 15px;
  top: 0px;
  right: 0px;
}
.tooltiptext {
  /*avoid the button to overlap on some docstring*/
  padding-right: 30px;
}
.ipython_tooltip {
  max-width: 700px;
  /*fade-in animation when inserted*/
  -webkit-animation: fadeOut 400ms;
  -moz-animation: fadeOut 400ms;
  animation: fadeOut 400ms;
  -webkit-animation: fadeIn 400ms;
  -moz-animation: fadeIn 400ms;
  animation: fadeIn 400ms;
  vertical-align: middle;
  background-color: #f7f7f7;
  overflow: visible;
  border: #ababab 1px solid;
  outline: none;
  padding: 3px;
  margin: 0px;
  padding-left: 7px;
  font-family: monospace;
  min-height: 50px;
  -moz-box-shadow: 0px 6px 10px -1px #adadad;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  border-radius: 2px;
  position: absolute;
  z-index: 1000;
}
.ipython_tooltip a {
  float: right;
}
.ipython_tooltip .tooltiptext pre {
  border: 0;
  border-radius: 0;
  font-size: 100%;
  background-color: #f7f7f7;
}
.pretooltiparrow {
  left: 0px;
  margin: 0px;
  top: -16px;
  width: 40px;
  height: 16px;
  overflow: hidden;
  position: absolute;
}
.pretooltiparrow:before {
  background-color: #f7f7f7;
  border: 1px #ababab solid;
  z-index: 11;
  content: "";
  position: absolute;
  left: 15px;
  top: 10px;
  width: 25px;
  height: 25px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
}
ul.typeahead-list i {
  margin-left: -10px;
  width: 18px;
}
[dir="rtl"] ul.typeahead-list i {
  margin-left: 0;
  margin-right: -10px;
}
ul.typeahead-list {
  max-height: 80vh;
  overflow: auto;
}
ul.typeahead-list > li > a {
  /** Firefox bug **/
  /* see https://github.com/jupyter/notebook/issues/559 */
  white-space: normal;
}
ul.typeahead-list  > li > a.pull-right {
  float: left !important;
  float: left;
}
[dir="rtl"] .typeahead-list {
  text-align: right;
}
.cmd-palette .modal-body {
  padding: 7px;
}
.cmd-palette form {
  background: white;
}
.cmd-palette input {
  outline: none;
}
.no-shortcut {
  min-width: 20px;
  color: transparent;
}
[dir="rtl"] .no-shortcut.pull-right {
  float: left !important;
  float: left;
}
[dir="rtl"] .command-shortcut.pull-right {
  float: left !important;
  float: left;
}
.command-shortcut:before {
  content: "(command mode)";
  padding-right: 3px;
  color: #777777;
}
.edit-shortcut:before {
  content: "(edit)";
  padding-right: 3px;
  color: #777777;
}
[dir="rtl"] .edit-shortcut.pull-right {
  float: left !important;
  float: left;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
  background-color: #BBDEFB;
  border-color: #90CAF9;
  border-style: solid;
  border-width: 1px;
  border-radius: 0px;
}
[dir="ltr"] #find-and-replace .input-group-btn + .form-control {
  border-left: none;
}
[dir="rtl"] #find-and-replace .input-group-btn + .form-control {
  border-right: none;
}
#find-and-replace #replace-preview .replace .match {
  background-color: #FFCDD2;
  border-color: #EF9A9A;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
  background-color: #C8E6C9;
  border-color: #A5D6A7;
  border-radius: 0px;
}
#find-and-replace #replace-preview {
  max-height: 60vh;
  overflow: auto;
}
#find-and-replace #replace-preview pre {
  padding: 5px 10px;
}
.terminal-app {
  background: #EEE;
}
.terminal-app #header {
  background: #fff;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
  width: 100%;
  float: left;
  font-family: monospace;
  color: white;
  background: black;
  padding: 0.4em;
  border-radius: 2px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
  line-height: 1em;
  font-size: 14px;
}
.terminal-app .terminal .xterm-rows {
  padding: 10px;
}
.terminal-app .terminal-cursor {
  color: black;
  background: white;
}
.terminal-app #terminado-container {
  margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
    </style>
<style type="text/css">
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    </style>
<style type="text/css">
    
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-bold { font-weight: bold; }

    </style>


<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}

div#notebook {
  overflow: visible;
  border-top: none;
}@media print {
  div.cell {
    display: block;
    page-break-inside: avoid;
  } 
  div.output_wrapper { 
    display: block;
    page-break-inside: avoid; 
  }
  div.output { 
    display: block;
    page-break-inside: avoid; 
  }
}
</style>

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<!-- Loading mathjax macro -->
<!-- Load mathjax -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS_HTML"></script>
    <!-- MathJax configuration -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], ["\\(","\\)"] ],
            displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        "HTML-CSS": {
            styles: {'.MathJax_Display': {"margin": 0}},
            linebreaks: { automatic: true }
        }
    });
    </script>
    <!-- End of mathjax configuration --></head>
<body>
  <div tabindex="-1" id="notebook" class="border-box-sizing">
    <div class="container" id="notebook-container">

<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#30693;&#35782;&#38454;&#27573;&#24615;&#24635;&#32467;&#65288;&#30693;&#35782;&#32771;&#26597;&#65289;">&#30693;&#35782;&#38454;&#27573;&#24615;&#24635;&#32467;&#65288;&#30693;&#35782;&#32771;&#26597;&#65289;<a class="anchor-link" href="#&#30693;&#35782;&#38454;&#27573;&#24615;&#24635;&#32467;&#65288;&#30693;&#35782;&#32771;&#26597;&#65289;">&#182;</a></h1><ul>
<li>本周主要内容：高德API</li>
<li>20春_API_人工智能与机器学习_week05</li>
<li>电子讲义设计者：许智超，廖汉腾
<br/>
<br/></li>
</ul>
<h2 id="&#19978;&#21608;&#22238;&#39038;&#65306;">&#19978;&#21608;&#22238;&#39038;&#65306;<a class="anchor-link" href="#&#19978;&#21608;&#22238;&#39038;&#65306;">&#182;</a></h2><ol>
<li>地图API简介（Web服务）</li>
<li>如何选择合适的API（开发支持）</li>
<li>权衡经济成本和产品设计成本（调用量和并发量思考，经济成本考量）</li>
<li>设计地图url需求</li>
<li>测试API功能<ol>
<li>地理编码/逆地理编码</li>
<li>路径规划</li>
</ol>
</li>
</ol>
<hr>
<p><br/>
<br/></p>
<h1 id="&#32454;&#35835;&#22320;&#22270;API&#65288;&#39640;&#24503;&#65289;">&#32454;&#35835;&#22320;&#22270;API&#65288;&#39640;&#24503;&#65289;<a class="anchor-link" href="#&#32454;&#35835;&#22320;&#22270;API&#65288;&#39640;&#24503;&#65289;">&#182;</a></h1><h2 id="&#26412;&#21608;&#20869;&#23481;&#20171;&#32461;">&#26412;&#21608;&#20869;&#23481;&#20171;&#32461;<a class="anchor-link" href="#&#26412;&#21608;&#20869;&#23481;&#20171;&#32461;">&#182;</a></h2><ul>
<li>关键：如何详细阅读和使用API参数<ol>
<li>回顾地理编码、逆地理编码、步行路径规划</li>
<li>路径规划2</li>
<li>搜索POI</li>
<li>IP定位</li>
<li>批量请求借口</li>
<li>静态地图</li>
<li>坐标转换 </li>
<li>交通态势</li>
</ol>
</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[283]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="o">%%html</span>
<span class="p">&lt;</span><span class="nt">style</span><span class="p">&gt;</span>
<span class="c">/* 本电子讲义使用之CSS */</span>
<span class="nt">div</span><span class="p">.</span><span class="nc">code_cell</span> <span class="p">{</span>
    <span class="k">background-color</span><span class="p">:</span> <span class="mh">#e5f1fe</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">div</span><span class="p">.</span><span class="nc">cell</span><span class="p">.</span><span class="nc">selected</span> <span class="p">{</span>
    <span class="k">background-color</span><span class="p">:</span> <span class="mh">#effee2</span><span class="p">;</span>
    <span class="k">font-size</span><span class="p">:</span> <span class="mi">2</span><span class="kt">rem</span><span class="p">;</span>
    <span class="k">line-height</span><span class="p">:</span> <span class="mf">2.4</span><span class="kt">rem</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">div</span><span class="p">.</span><span class="nc">cell</span><span class="p">.</span><span class="nc">selected</span> <span class="p">.</span><span class="nc">rendered_html</span> <span class="nt">table</span> <span class="p">{</span>
    <span class="k">font-size</span><span class="p">:</span> <span class="mi">2</span><span class="kt">rem</span> <span class="cp">!important</span><span class="p">;</span>
    <span class="k">line-height</span><span class="p">:</span> <span class="mf">2.4</span><span class="kt">rem</span> <span class="cp">!important</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">.</span><span class="nc">rendered_html</span> <span class="nt">pre</span> <span class="nt">code</span> <span class="p">{</span>
    <span class="k">background-color</span><span class="p">:</span> <span class="mh">#C4E4ff</span><span class="p">;</span>   
    <span class="k">padding</span><span class="p">:</span> <span class="mi">2</span><span class="kt">px</span> <span class="mi">25</span><span class="kt">px</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">.</span><span class="nc">rendered_html</span> <span class="nt">pre</span> <span class="p">{</span>
    <span class="k">background-color</span><span class="p">:</span> <span class="mh">#99c9ff</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">div</span><span class="p">.</span><span class="nc">code_cell</span> <span class="p">.</span><span class="nc">CodeMirror</span> <span class="p">{</span>
    <span class="k">font-size</span><span class="p">:</span> <span class="mi">2</span><span class="kt">rem</span> <span class="cp">!important</span><span class="p">;</span>
    <span class="k">line-height</span><span class="p">:</span> <span class="mf">2.4</span><span class="kt">rem</span> <span class="cp">!important</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">.</span><span class="nc">rendered_html</span> <span class="nt">img</span><span class="o">,</span> <span class="p">.</span><span class="nc">rendered_html</span> <span class="nt">svg</span> <span class="p">{</span>
    <span class="k">max-width</span><span class="p">:</span> <span class="mi">100</span><span class="kt">%</span><span class="p">;</span>
    <span class="k">height</span><span class="p">:</span> <span class="kc">auto</span><span class="p">;</span>
    <span class="k">float</span><span class="p">:</span> <span class="kc">center</span><span class="p">;</span>
<span class="p">}</span>
<span class="c">/* Gradient transparent - color - transparent */</span>
<span class="nt">hr</span> <span class="p">{</span>
    <span class="k">border</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
    <span class="k">border-bottom</span><span class="p">:</span> <span class="mi">1</span><span class="kt">px</span> <span class="kc">dashed</span> <span class="mh">#ccc</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">.</span><span class="nc">emoticon</span><span class="p">{</span>
    <span class="k">font-size</span><span class="p">:</span> <span class="mi">5</span><span class="kt">rem</span><span class="p">;</span>
    <span class="k">line-height</span><span class="p">:</span> <span class="mf">4.4</span><span class="kt">rem</span><span class="p">;</span>
    <span class="k">text-align</span><span class="p">:</span> <span class="kc">center</span><span class="p">;</span>
    <span class="k">vertical-align</span><span class="p">:</span> <span class="kc">middle</span><span class="p">;</span>
<span class="p">}</span>

<span class="p">&lt;/</span><span class="nt">style</span><span class="p">&gt;</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<style>
/* 本电子讲义使用之CSS */
div.code_cell {
    background-color: #e5f1fe;
}
div.cell.selected {
    background-color: #effee2;
    font-size: 2rem;
    line-height: 2.4rem;
}
div.cell.selected .rendered_html table {
    font-size: 2rem !important;
    line-height: 2.4rem !important;
}
.rendered_html pre code {
    background-color: #C4E4ff;   
    padding: 2px 25px;
}
.rendered_html pre {
    background-color: #99c9ff;
}
div.code_cell .CodeMirror {
    font-size: 2rem !important;
    line-height: 2.4rem !important;
}
.rendered_html img, .rendered_html svg {
    max-width: 100%;
    height: auto;
    float: center;
}
/* Gradient transparent - color - transparent */
hr {
    border: 0;
    border-bottom: 1px dashed #ccc;
}
.emoticon{
    font-size: 5rem;
    line-height: 4.4rem;
    text-align: center;
    vertical-align: middle;
}

</style>

</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#22238;&#39038;&#22320;&#29702;&#32534;&#30721;&#12289;&#36870;&#22320;&#29702;&#32534;&#30721;&#12289;&#27493;&#34892;&#36335;&#24452;&#35268;&#21010;&#65288;&#20195;&#30721;A&#65289;">&#22238;&#39038;&#22320;&#29702;&#32534;&#30721;&#12289;&#36870;&#22320;&#29702;&#32534;&#30721;&#12289;&#27493;&#34892;&#36335;&#24452;&#35268;&#21010;&#65288;&#20195;&#30721;A&#65289;<a class="anchor-link" href="#&#22238;&#39038;&#22320;&#29702;&#32534;&#30721;&#12289;&#36870;&#22320;&#29702;&#32534;&#30721;&#12289;&#27493;&#34892;&#36335;&#24452;&#35268;&#21010;&#65288;&#20195;&#30721;A&#65289;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[284]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[285]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">requests</span>
<span class="n">key_xu</span> <span class="o">=</span><span class="s2">&quot;9aa1b6f172a74fe31afb5c74a2091446&quot;</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="A-1-&#33719;&#21462;&#22320;&#29702;&#32534;&#30721;">A-1 &#33719;&#21462;&#22320;&#29702;&#32534;&#30721;<a class="anchor-link" href="#A-1-&#33719;&#21462;&#22320;&#29702;&#32534;&#30721;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>思考：如果只是文字表示一个地点那么会存在一定的误差，地理编码这样精确的坐标避免了太多的误差。若是通过此api调用，实现全球地理转化，那么数据收集也就不会有过多文字干扰，加快了收集数据的速度。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[341]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># A-1 地理编码</span>
<span class="k">def</span> <span class="nf">geocode</span><span class="p">(</span><span class="n">address</span><span class="p">,</span><span class="n">city</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">batch</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="sd">&quot;&quot;&quot;获取地理编码&quot;&quot;&quot;</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/geocode/geo?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span> <span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;address&#39;</span><span class="p">:</span><span class="n">address</span><span class="p">,</span>
        <span class="s1">&#39;city&#39;</span><span class="p">:</span><span class="n">city</span><span class="p">,</span>
        <span class="s1">&#39;batch&#39;</span><span class="p">:</span><span class="n">batch</span><span class="p">,</span>
        <span class="s1">&#39;sig&#39;</span><span class="p">:</span><span class="n">sig</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
<span class="n">中大</span> <span class="o">=</span> <span class="n">geocode</span><span class="p">(</span><span class="n">address</span><span class="o">=</span><span class="s1">&#39;广东省广州市海珠区中山大学&#39;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">中大</span><span class="p">)</span>
<span class="n">df_中大地理编码</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大</span><span class="p">[</span><span class="s1">&#39;geocodes&#39;</span><span class="p">])</span>
<span class="n">display</span><span class="p">(</span><span class="n">df_中大地理编码</span><span class="p">)</span>
<span class="n">中大地理编码</span> <span class="o">=</span> <span class="n">中大</span><span class="p">[</span><span class="s1">&#39;geocodes&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;location&#39;</span><span class="p">]</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;中大地理编码:&quot;</span><span class="p">,</span><span class="n">中大地理编码</span><span class="p">)</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>{&#39;status&#39;: &#39;1&#39;, &#39;info&#39;: &#39;OK&#39;, &#39;infocode&#39;: &#39;10000&#39;, &#39;count&#39;: &#39;1&#39;, &#39;geocodes&#39;: [{&#39;formatted_address&#39;: &#39;广东省广州市海珠区中山大学&#39;, &#39;country&#39;: &#39;中国&#39;, &#39;province&#39;: &#39;广东省&#39;, &#39;citycode&#39;: &#39;020&#39;, &#39;city&#39;: &#39;广州市&#39;, &#39;district&#39;: &#39;海珠区&#39;, &#39;township&#39;: [], &#39;neighborhood&#39;: {&#39;name&#39;: [], &#39;type&#39;: []}, &#39;building&#39;: {&#39;name&#39;: [], &#39;type&#39;: []}, &#39;adcode&#39;: &#39;440105&#39;, &#39;street&#39;: [], &#39;number&#39;: [], &#39;location&#39;: &#39;113.291418,23.094611&#39;, &#39;level&#39;: &#39;兴趣点&#39;}]}
</pre>
</div>
</div>

<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>formatted_address</th>
      <th>country</th>
      <th>province</th>
      <th>citycode</th>
      <th>city</th>
      <th>district</th>
      <th>township</th>
      <th>adcode</th>
      <th>street</th>
      <th>number</th>
      <th>location</th>
      <th>level</th>
      <th>neighborhood.name</th>
      <th>neighborhood.type</th>
      <th>building.name</th>
      <th>building.type</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>广东省广州市海珠区中山大学</td>
      <td>中国</td>
      <td>广东省</td>
      <td>020</td>
      <td>广州市</td>
      <td>海珠区</td>
      <td>[]</td>
      <td>440105</td>
      <td>[]</td>
      <td>[]</td>
      <td>113.291418,23.094611</td>
      <td>兴趣点</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

<div class="output_area">

    <div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>中大地理编码: 113.291418,23.094611
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="A-2-&#36870;&#22320;&#29702;&#32534;&#30721;&#65288;&#22522;&#30784;/&#20840;&#65289;">A-2 &#36870;&#22320;&#29702;&#32534;&#30721;&#65288;&#22522;&#30784;/&#20840;&#65289;<a class="anchor-link" href="#A-2-&#36870;&#22320;&#29702;&#32534;&#30721;&#65288;&#22522;&#30784;/&#20840;&#65289;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>思考：若第一个点实现了，那么我们就可以通过查找得到全球ip地理编码，再通过逆地理编码找到
相应的位置，即使在异国他乡也可以精准找到定位。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[287]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># A-2 基础逆地理编码分析</span>

<span class="c1"># extensions 参数默认取值是 base，也就是返回基本地址信息；</span>
<span class="c1">#extensions 参数取值为 all 时会返回基本地址信息、附近 POI 内容、道路信息以及道路交叉口信息。</span>

<span class="k">def</span> <span class="nf">regeocode</span><span class="p">(</span><span class="n">location</span><span class="p">,</span><span class="n">poitype</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">radius</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s2">&quot;base&quot;</span><span class="p">,</span><span class="n">batch</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span><span class="n">roadlevel</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">homeorcorp</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="sd">&quot;&quot;&quot;获取逆地理编码&quot;&quot;&quot;</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/geocode/regeo?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span> <span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;location&#39;</span><span class="p">:</span><span class="n">location</span><span class="p">,</span>
        <span class="s1">&#39;poitype&#39;</span><span class="p">:</span><span class="n">poitype</span><span class="p">,</span>
        <span class="s1">&#39;radius&#39;</span><span class="p">:</span><span class="n">radius</span><span class="p">,</span>
        <span class="s1">&#39;extensions&#39;</span><span class="p">:</span><span class="n">extensions</span><span class="p">,</span>
        <span class="s1">&#39;batch&#39;</span><span class="p">:</span><span class="n">batch</span><span class="p">,</span>
        <span class="s1">&#39;roadlevel&#39;</span><span class="p">:</span><span class="n">roadlevel</span><span class="p">,</span>
        <span class="s1">&#39;homeorcorp&#39;</span><span class="p">:</span><span class="n">homeorcorp</span><span class="p">,</span>
        <span class="s1">&#39;sig&#39;</span><span class="p">:</span><span class="n">sig</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>

<span class="n">中大逆地理编码_base</span> <span class="o">=</span> <span class="n">regeocode</span><span class="p">(</span><span class="n">中大地理编码</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s2">&quot;base&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">中大逆地理编码_base</span><span class="p">)</span>
<span class="n">df_中大逆地理编码_base</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大逆地理编码_base</span><span class="p">)</span><span class="o">.</span><span class="n">T</span>
<span class="n">display</span><span class="p">(</span><span class="n">df_中大逆地理编码_base</span><span class="p">)</span>

<span class="c1"># 中大南方逆地理编码_base = regeocode(中大南方逆地理编码_base,extensions=&quot;base&quot;,radius= 3000,roadlevel=1)</span>
<span class="c1"># print(中大南方逆地理编码_base)</span>
<span class="c1"># df_中大南方逆地理编码_base = pd.json_normalize(中大南方逆地理编码_base)</span>
<span class="c1"># display(df_中大南方逆地理编码_base) # status 返回值为 0 或 1，0 表示请求失败；1 表示请求成功。</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>{&#39;status&#39;: &#39;1&#39;, &#39;regeocode&#39;: {&#39;addressComponent&#39;: {&#39;city&#39;: &#39;广州市&#39;, &#39;province&#39;: &#39;广东省&#39;, &#39;adcode&#39;: &#39;440105&#39;, &#39;district&#39;: &#39;海珠区&#39;, &#39;towncode&#39;: &#39;440105002000&#39;, &#39;streetNumber&#39;: {&#39;number&#39;: &#39;150号&#39;, &#39;location&#39;: &#39;113.290206,23.0954111&#39;, &#39;direction&#39;: &#39;西北&#39;, &#39;distance&#39;: &#39;152.584&#39;, &#39;street&#39;: &#39;怡乐路&#39;}, &#39;country&#39;: &#39;中国&#39;, &#39;township&#39;: &#39;新港街道&#39;, &#39;businessAreas&#39;: [{&#39;location&#39;: &#39;113.31655,23.094556&#39;, &#39;name&#39;: &#39;新港&#39;, &#39;id&#39;: &#39;440105&#39;}, {&#39;location&#39;: &#39;113.281913,23.092278&#39;, &#39;name&#39;: &#39;晓港&#39;, &#39;id&#39;: &#39;440105&#39;}, {&#39;location&#39;: &#39;113.296737,23.085197&#39;, &#39;name&#39;: &#39;凤阳&#39;, &#39;id&#39;: &#39;440105&#39;}], &#39;building&#39;: {&#39;name&#39;: &#39;博济康之选药店(蒲园路)&#39;, &#39;type&#39;: &#39;医疗保健服务;医药保健销售店;药房&#39;}, &#39;neighborhood&#39;: {&#39;name&#39;: [], &#39;type&#39;: []}, &#39;citycode&#39;: &#39;020&#39;}, &#39;formatted_address&#39;: &#39;广东省广州市海珠区新港街道博济康之选药店(蒲园路)中山大学广州校区南校园&#39;}, &#39;info&#39;: &#39;OK&#39;, &#39;infocode&#39;: &#39;10000&#39;}
</pre>
</div>
</div>

<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>status</th>
      <td>1</td>
    </tr>
    <tr>
      <th>info</th>
      <td>OK</td>
    </tr>
    <tr>
      <th>infocode</th>
      <td>10000</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.city</th>
      <td>广州市</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.province</th>
      <td>广东省</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.adcode</th>
      <td>440105</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.district</th>
      <td>海珠区</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.towncode</th>
      <td>440105002000</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.streetNumber.number</th>
      <td>150号</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.streetNumber.location</th>
      <td>113.290206,23.0954111</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.streetNumber.direction</th>
      <td>西北</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.streetNumber.distance</th>
      <td>152.584</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.streetNumber.street</th>
      <td>怡乐路</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.country</th>
      <td>中国</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.township</th>
      <td>新港街道</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.businessAreas</th>
      <td>[{'location': '113.31655,23.094556', 'name': '...</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.building.name</th>
      <td>博济康之选药店(蒲园路)</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.building.type</th>
      <td>医疗保健服务;医药保健销售店;药房</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.neighborhood.name</th>
      <td>[]</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.neighborhood.type</th>
      <td>[]</td>
    </tr>
    <tr>
      <th>regeocode.addressComponent.citycode</th>
      <td>020</td>
    </tr>
    <tr>
      <th>regeocode.formatted_address</th>
      <td>广东省广州市海珠区新港街道博济康之选药店(蒲园路)中山大学广州校区南校园</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[288]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># A-2 Extra 全部逆地理编码分析</span>

<span class="c1"># 中大南方逆地理编码_all = regeocode(中大南方地理编码,extensions=&quot;all&quot;)</span>
<span class="c1"># print(中大南方逆地理编码_all)</span>
<span class="c1"># df_中大南方逆地理编码_all = pd.json_normalize(中大南方逆地理编码_all)</span>
<span class="c1"># display(df_中大南方逆地理编码_all)</span>

<span class="n">中大逆地理编码_all</span> <span class="o">=</span> <span class="n">regeocode</span><span class="p">(</span><span class="n">中大地理编码</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s2">&quot;all&quot;</span><span class="p">,</span><span class="n">radius</span><span class="o">=</span> <span class="mi">3000</span><span class="p">,</span><span class="n">roadlevel</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">中大逆地理编码_all</span><span class="p">)</span>
<span class="n">df_中大逆地理编码_all</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大逆地理编码_all</span><span class="p">)</span>
<span class="n">display</span><span class="p">(</span><span class="n">df_中大逆地理编码_all</span><span class="p">)</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>{&#39;status&#39;: &#39;1&#39;, &#39;regeocode&#39;: {&#39;roads&#39;: [{&#39;id&#39;: &#39;020F49F0110431139&#39;, &#39;location&#39;: &#39;113.291,23.0927&#39;, &#39;direction&#39;: &#39;北&#39;, &#39;name&#39;: &#39;新港西路&#39;, &#39;distance&#39;: &#39;221.936&#39;}, {&#39;id&#39;: &#39;020F49F011043846&#39;, &#39;location&#39;: &#39;113.285,23.0938&#39;, &#39;direction&#39;: &#39;东&#39;, &#39;name&#39;: &#39;东晓路辅路&#39;, &#39;distance&#39;: &#39;680.156&#39;}, {&#39;id&#39;: &#39;020F49F0120434892&#39;, &#39;location&#39;: &#39;113.297,23.091&#39;, &#39;direction&#39;: &#39;西北&#39;, &#39;name&#39;: &#39;瑞康路&#39;, &#39;distance&#39;: &#39;696.132&#39;}], &#39;roadinters&#39;: [{&#39;second_name&#39;: &#39;园西路&#39;, &#39;first_id&#39;: &#39;020F49F01104310196&#39;, &#39;second_id&#39;: &#39;020F49F01104310230&#39;, &#39;location&#39;: &#39;113.2916172,23.09375833&#39;, &#39;distance&#39;: &#39;96.9926&#39;, &#39;first_name&#39;: &#39;蒲园路&#39;, &#39;direction&#39;: &#39;北&#39;}], &#39;formatted_address&#39;: &#39;广东省广州市海珠区新港街道博济康之选药店(蒲园路)中山大学广州校区南校园&#39;, &#39;addressComponent&#39;: {&#39;city&#39;: &#39;广州市&#39;, &#39;province&#39;: &#39;广东省&#39;, &#39;adcode&#39;: &#39;440105&#39;, &#39;district&#39;: &#39;海珠区&#39;, &#39;towncode&#39;: &#39;440105002000&#39;, &#39;streetNumber&#39;: {&#39;number&#39;: &#39;150号&#39;, &#39;location&#39;: &#39;113.290206,23.0954111&#39;, &#39;direction&#39;: &#39;西北&#39;, &#39;distance&#39;: &#39;152.584&#39;, &#39;street&#39;: &#39;怡乐路&#39;}, &#39;country&#39;: &#39;中国&#39;, &#39;township&#39;: &#39;新港街道&#39;, &#39;businessAreas&#39;: [{&#39;location&#39;: &#39;113.31655,23.094556&#39;, &#39;name&#39;: &#39;新港&#39;, &#39;id&#39;: &#39;440105&#39;}, {&#39;location&#39;: &#39;113.281913,23.092278&#39;, &#39;name&#39;: &#39;晓港&#39;, &#39;id&#39;: &#39;440105&#39;}, {&#39;location&#39;: &#39;113.296737,23.085197&#39;, &#39;name&#39;: &#39;凤阳&#39;, &#39;id&#39;: &#39;440105&#39;}], &#39;building&#39;: {&#39;name&#39;: &#39;博济康之选药店(蒲园路)&#39;, &#39;type&#39;: &#39;医疗保健服务;医药保健销售店;药房&#39;}, &#39;neighborhood&#39;: {&#39;name&#39;: [], &#39;type&#39;: []}, &#39;citycode&#39;: &#39;020&#39;}, &#39;aois&#39;: [{&#39;area&#39;: &#39;968572.518602&#39;, &#39;type&#39;: &#39;141201&#39;, &#39;id&#39;: &#39;B00141IHRZ&#39;, &#39;location&#39;: &#39;113.298415,23.096714&#39;, &#39;adcode&#39;: &#39;440105&#39;, &#39;name&#39;: &#39;中山大学广州校区南校园&#39;, &#39;distance&#39;: &#39;0&#39;}, {&#39;area&#39;: &#39;11159.027838&#39;, &#39;type&#39;: &#39;141202&#39;, &#39;id&#39;: &#39;B00140V07R&#39;, &#39;location&#39;: &#39;113.29102,23.093801&#39;, &#39;adcode&#39;: &#39;440105&#39;, &#39;name&#39;: &#39;中山大学附属中学&#39;, &#39;distance&#39;: &#39;41.6322&#39;}, {&#39;area&#39;: &#39;6761.661316&#39;, &#39;type&#39;: &#39;141203&#39;, &#39;id&#39;: &#39;B00140TFUF&#39;, &#39;location&#39;: &#39;113.290511,23.094417&#39;, &#39;adcode&#39;: &#39;440105&#39;, &#39;name&#39;: &#39;中山大学南校区附属小学&#39;, &#39;distance&#39;: &#39;46.7589&#39;}], &#39;pois&#39;: [{&#39;id&#39;: &#39;B00140V07R&#39;, &#39;direction&#39;: &#39;西南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号&#39;, &#39;poiweight&#39;: &#39;0.467769&#39;, &#39;name&#39;: &#39;中山大学附属中学&#39;, &#39;location&#39;: &#39;113.29102,23.093801&#39;, &#39;distance&#39;: &#39;98.8474&#39;, &#39;tel&#39;: &#39;020-84112518;020-84113971&#39;, &#39;type&#39;: &#39;科教文化服务;学校;中学&#39;}, {&#39;id&#39;: &#39;B00140TFUF&#39;, &#39;direction&#39;: &#39;西&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学南校区&#39;, &#39;poiweight&#39;: &#39;0.384976&#39;, &#39;name&#39;: &#39;中山大学南校区附属小学&#39;, &#39;location&#39;: &#39;113.290511,23.094417&#39;, &#39;distance&#39;: &#39;95.2493&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;学校;小学&#39;}, {&#39;id&#39;: &#39;B00140WDN8&#39;, &#39;direction&#39;: &#39;东南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号大院中大蒲园区634号首层&#39;, &#39;poiweight&#39;: &#39;0.384563&#39;, &#39;name&#39;: &#39;中国建设银行(中山大学支行)&#39;, &#39;location&#39;: &#39;113.291972,23.093306&#39;, &#39;distance&#39;: &#39;155.784&#39;, &#39;tel&#39;: &#39;020-34049809;020-34049821&#39;, &#39;type&#39;: &#39;金融保险服务;银行;中国建设银行&#39;}, {&#39;id&#39;: &#39;B001423QC8&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中大园西区719栋103&#39;, &#39;poiweight&#39;: &#39;0.185048&#39;, &#39;name&#39;: &#39;中山大学南校区-优数教育&#39;, &#39;location&#39;: &#39;113.291460,23.094467&#39;, &#39;distance&#39;: &#39;16.5955&#39;, &#39;tel&#39;: &#39;020-84034574;18998491778&#39;, &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B00140KDZ6&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家大学科技园B座13层&#39;, &#39;poiweight&#39;: &#39;0.281905&#39;, &#39;name&#39;: &#39;中国大学生创业园海珠园区&#39;, &#39;location&#39;: &#39;113.29106,23.093049&#39;, &#39;distance&#39;: &#39;177.538&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;商务住宅;产业园区;产业园区&#39;}, {&#39;id&#39;: &#39;B00141SB7V&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中大科技综合楼B座1层&#39;, &#39;poiweight&#39;: &#39;0.419527&#39;, &#39;name&#39;: &#39;上海浦东发展银行(中大支行)&#39;, &#39;location&#39;: &#39;113.291131,23.092970&#39;, &#39;distance&#39;: &#39;184.837&#39;, &#39;tel&#39;: &#39;020-84115789;020-84115778&#39;, &#39;type&#39;: &#39;金融保险服务;银行;上海浦东发展银行&#39;}, {&#39;id&#39;: &#39;B00141U846&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号&#39;, &#39;poiweight&#39;: &#39;0.252779&#39;, &#39;name&#39;: &#39;中山大学广州南校区科技园&#39;, &#39;location&#39;: &#39;113.291983,23.092881&#39;, &#39;distance&#39;: &#39;200.87&#39;, &#39;tel&#39;: &#39;020-84115999&#39;, &#39;type&#39;: &#39;商务住宅;产业园区;产业园区&#39;}, {&#39;id&#39;: &#39;B00140KFAV&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中大科技综合楼A座102室&#39;, &#39;poiweight&#39;: &#39;0.525081&#39;, &#39;name&#39;: &#39;中国银行(广州中山大学支行)&#39;, &#39;location&#39;: &#39;113.291948,23.092797&#39;, &#39;distance&#39;: &#39;208.893&#39;, &#39;tel&#39;: &#39;020-84113688;020-84113768&#39;, &#39;type&#39;: &#39;金融保险服务;银行;中国银行&#39;}, {&#39;id&#39;: &#39;B00140U8SD&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号&#39;, &#39;poiweight&#39;: &#39;0.337242&#39;, &#39;name&#39;: &#39;中山大学国家大学科技园B座&#39;, &#39;location&#39;: &#39;113.291126,23.093053&#39;, &#39;distance&#39;: &#39;175.811&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;商务住宅;楼宇;商务写字楼&#39;}, {&#39;id&#39;: &#39;B0FFG30WP6&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学南校区&#39;, &#39;poiweight&#39;: &#39;0.28826&#39;, &#39;name&#39;: &#39;中山大学广州南校区科技综合楼2期&#39;, &#39;location&#39;: &#39;113.290937,23.093079&#39;, &#39;distance&#39;: &#39;177.348&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;商务住宅;楼宇;商务写字楼&#39;}, {&#39;id&#39;: &#39;B00141JGF2&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号&#39;, &#39;poiweight&#39;: &#39;0.317136&#39;, &#39;name&#39;: &#39;中山大学国家大学科技园A座&#39;, &#39;location&#39;: &#39;113.291676,23.092961&#39;, &#39;distance&#39;: &#39;185.369&#39;, &#39;tel&#39;: &#39;020-84115999&#39;, &#39;type&#39;: &#39;商务住宅;楼宇;商务写字楼&#39;}, {&#39;id&#39;: &#39;B00140U3D6&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学蒲园区634号1楼南&#39;, &#39;poiweight&#39;: &#39;0.320061&#39;, &#39;name&#39;: &#39;广州中大建筑设计研究院(暂停营业)&#39;, &#39;location&#39;: &#39;113.291800,23.093217&#39;, &#39;distance&#39;: &#39;159.878&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;科研机构;科研机构&#39;}, {&#39;id&#39;: &#39;B00140FY1X&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家大学科技园B座8层806-807&#39;, &#39;poiweight&#39;: &#39;0.36933&#39;, &#39;name&#39;: &#39;中山大学广东发展研究院&#39;, &#39;location&#39;: &#39;113.291126,23.093053&#39;, &#39;distance&#39;: &#39;175.811&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;科研机构;科研机构&#39;}, {&#39;id&#39;: &#39;B0FFFDBVOY&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学园西路附近&#39;, &#39;poiweight&#39;: &#39;0.340143&#39;, &#39;name&#39;: &#39;中山大学附属中学招生办&#39;, &#39;location&#39;: &#39;113.291775,23.093559&#39;, &#39;distance&#39;: &#39;122.571&#39;, &#39;tel&#39;: &#39;020-84111796&#39;, &#39;type&#39;: &#39;科教文化服务;学校;中学&#39;}, {&#39;id&#39;: &#39;B0FFG4HZXN&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学蒲园区634号楼&#39;, &#39;poiweight&#39;: &#39;0.221615&#39;, &#39;name&#39;: &#39;中国基本建设优化研究会医院建设优化研究所&#39;, &#39;location&#39;: &#39;113.291801,23.093216&#39;, &#39;distance&#39;: &#39;159.996&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;科研机构;科研机构&#39;}, {&#39;id&#39;: &#39;B00140U3D7&#39;, &#39;direction&#39;: &#39;东&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;大榕路与蒲园路交叉口西200米&#39;, &#39;poiweight&#39;: &#39;0.47545&#39;, &#39;name&#39;: &#39;西翠园&#39;, &#39;location&#39;: &#39;113.293071,23.095130&#39;, &#39;distance&#39;: &#39;178.662&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;风景名胜;公园广场;公园&#39;}, {&#39;id&#39;: &#39;B0FFHN78MN&#39;, &#39;direction&#39;: &#39;东北&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路中山大学南校园蒲园区665号&#39;, &#39;poiweight&#39;: &#39;0.179677&#39;, &#39;name&#39;: &#39;中山大学广州校区南校园方润华楼&#39;, &#39;location&#39;: &#39;113.293088,23.095840&#39;, &#39;distance&#39;: &#39;218.755&#39;, &#39;tel&#39;: &#39;020-84111293&#39;, &#39;type&#39;: &#39;科教文化服务;学校;学校&#39;}, {&#39;id&#39;: &#39;B0FFLM8VDM&#39;, &#39;direction&#39;: &#39;西南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家科技园B座&#39;, &#39;poiweight&#39;: &#39;0.185496&#39;, &#39;name&#39;: &#39;逸成教育海珠校区&#39;, &#39;location&#39;: &#39;113.290781,23.093102&#39;, &#39;distance&#39;: &#39;180.023&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B00140JHP2&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家大学科技园B座6层612&#39;, &#39;poiweight&#39;: &#39;0.262655&#39;, &#39;name&#39;: &#39;海珠区科技产业基地管理委员会办公室&#39;, &#39;location&#39;: &#39;113.291126,23.093053&#39;, &#39;distance&#39;: &#39;175.811&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;政府机构及社会团体;政府机关;区县级政府及事业单位&#39;}, {&#39;id&#39;: &#39;B0FFGCANBP&#39;, &#39;direction&#39;: &#39;北&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;园西路与蒲园路交叉口西北150米&#39;, &#39;poiweight&#39;: &#39;0.1863&#39;, &#39;name&#39;: &#39;中山大学-思涵少儿英语&#39;, &#39;location&#39;: &#39;113.290871,23.096318&#39;, &#39;distance&#39;: &#39;197.885&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B0FFFF4FVV&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家科技园A座402号&#39;, &#39;poiweight&#39;: &#39;0.241473&#39;, &#39;name&#39;: &#39;广东省总招生办中大办公室&#39;, &#39;location&#39;: &#39;113.291858,23.092799&#39;, &#39;distance&#39;: &#39;206.484&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;学校;高等院校|科教文化服务;学校;成人教育&#39;}, {&#39;id&#39;: &#39;B0FFFGX8UE&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家科技园A座402号&#39;, &#39;poiweight&#39;: &#39;0.18278&#39;, &#39;name&#39;: &#39;中山大学-成人教育新生报名点&#39;, &#39;location&#39;: &#39;113.292077,23.092767&#39;, &#39;distance&#39;: &#39;215.862&#39;, &#39;tel&#39;: &#39;020-84115953&#39;, &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;}, {&#39;id&#39;: &#39;B0FFHRN9RM&#39;, &#39;direction&#39;: &#39;西南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路89号(百佳超市正对面)&#39;, &#39;poiweight&#39;: &#39;0.187262&#39;, &#39;name&#39;: &#39;中山大学南校区-方法教育&#39;, &#39;location&#39;: &#39;113.290093,23.092960&#39;, &#39;distance&#39;: &#39;228.209&#39;, &#39;tel&#39;: &#39;020-34255811&#39;, &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B0FFG4GSC4&#39;, &#39;direction&#39;: &#39;东南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学园南路&#39;, &#39;poiweight&#39;: &#39;0.186094&#39;, &#39;name&#39;: &#39;中山大学管理学院酒店管理培训中心&#39;, &#39;location&#39;: &#39;113.292691,23.093097&#39;, &#39;distance&#39;: &#39;212.855&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B00141IHWF&#39;, &#39;direction&#39;: &#39;西&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;怡乐路怡乐七巷5号&#39;, &#39;poiweight&#39;: &#39;0.139721&#39;, &#39;name&#39;: &#39;广州市海珠区司法局新港司法所&#39;, &#39;location&#39;: &#39;113.289213,23.093933&#39;, &#39;distance&#39;: &#39;237.815&#39;, &#39;tel&#39;: &#39;020-89105496&#39;, &#39;type&#39;: &#39;政府机构及社会团体;公检法机构;公检法机关&#39;}, {&#39;id&#39;: &#39;B00141SYWC&#39;, &#39;direction&#39;: &#39;东&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学蒲园区614-106室&#39;, &#39;poiweight&#39;: &#39;0.11928&#39;, &#39;name&#39;: &#39;中山大学南校区-格蕾思英语&#39;, &#39;location&#39;: &#39;113.293720,23.094496&#39;, &#39;distance&#39;: &#39;235.809&#39;, &#39;tel&#39;: &#39;020-84037190&#39;, &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B00141RGVQ&#39;, &#39;direction&#39;: &#39;东南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学&#39;, &#39;poiweight&#39;: &#39;0.373551&#39;, &#39;name&#39;: &#39;中山大学管理学院&#39;, &#39;location&#39;: &#39;113.292377,23.093221&#39;, &#39;distance&#39;: &#39;183.062&#39;, &#39;tel&#39;: &#39;020-84112602&#39;, &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;}, {&#39;id&#39;: &#39;B0FFG4EQ88&#39;, &#39;direction&#39;: &#39;西南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路85号&#39;, &#39;poiweight&#39;: &#39;0.186094&#39;, &#39;name&#39;: &#39;昭越教育&#39;, &#39;location&#39;: &#39;113.289657,23.093065&#39;, &#39;distance&#39;: &#39;249.019&#39;, &#39;tel&#39;: &#39;020-86005006&#39;, &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B0FFGCARW8&#39;, &#39;direction&#39;: &#39;西&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;怡乐七巷5&#39;, &#39;poiweight&#39;: &#39;0.117443&#39;, &#39;name&#39;: &#39;海珠区新港街人民调解委员会&#39;, &#39;location&#39;: &#39;113.289209,23.093931&#39;, &#39;distance&#39;: &#39;238.288&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;政府机构及社会团体;政府机关;乡镇级政府及事业单位&#39;}, {&#39;id&#39;: &#39;B0FFG4G65O&#39;, &#39;direction&#39;: &#39;西&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;怡乐路怡乐七巷5号&#39;, &#39;poiweight&#39;: &#39;0.109824&#39;, &#39;name&#39;: &#39;怡乐社区居委会&#39;, &#39;location&#39;: &#39;113.289148,23.094004&#39;, &#39;distance&#39;: &#39;241.814&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;政府机构及社会团体;政府机关;乡镇以下级政府及事业单位&#39;}]}, &#39;info&#39;: &#39;OK&#39;, &#39;infocode&#39;: &#39;10000&#39;}
</pre>
</div>
</div>

<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>status</th>
      <th>info</th>
      <th>infocode</th>
      <th>regeocode.roads</th>
      <th>regeocode.roadinters</th>
      <th>regeocode.formatted_address</th>
      <th>regeocode.addressComponent.city</th>
      <th>regeocode.addressComponent.province</th>
      <th>regeocode.addressComponent.adcode</th>
      <th>regeocode.addressComponent.district</th>
      <th>...</th>
      <th>regeocode.addressComponent.country</th>
      <th>regeocode.addressComponent.township</th>
      <th>regeocode.addressComponent.businessAreas</th>
      <th>regeocode.addressComponent.building.name</th>
      <th>regeocode.addressComponent.building.type</th>
      <th>regeocode.addressComponent.neighborhood.name</th>
      <th>regeocode.addressComponent.neighborhood.type</th>
      <th>regeocode.addressComponent.citycode</th>
      <th>regeocode.aois</th>
      <th>regeocode.pois</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>OK</td>
      <td>10000</td>
      <td>[{'id': '020F49F0110431139', 'location': '113....</td>
      <td>[{'second_name': '园西路', 'first_id': '020F49F01...</td>
      <td>广东省广州市海珠区新港街道博济康之选药店(蒲园路)中山大学广州校区南校园</td>
      <td>广州市</td>
      <td>广东省</td>
      <td>440105</td>
      <td>海珠区</td>
      <td>...</td>
      <td>中国</td>
      <td>新港街道</td>
      <td>[{'location': '113.31655,23.094556', 'name': '...</td>
      <td>博济康之选药店(蒲园路)</td>
      <td>医疗保健服务;医药保健销售店;药房</td>
      <td>[]</td>
      <td>[]</td>
      <td>020</td>
      <td>[{'area': '968572.518602', 'type': '141201', '...</td>
      <td>[{'id': 'B00140V07R', 'direction': '西南', 'busi...</td>
    </tr>
  </tbody>
</table>
<p>1 rows × 26 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="A-3-&#20840;&#37096;&#36870;&#22320;&#29702;&#32534;&#30721;&#20998;&#26512;&#32454;&#33410;">A-3 &#20840;&#37096;&#36870;&#22320;&#29702;&#32534;&#30721;&#20998;&#26512;&#32454;&#33410;<a class="anchor-link" href="#A-3-&#20840;&#37096;&#36870;&#22320;&#29702;&#32534;&#30721;&#20998;&#26512;&#32454;&#33410;">&#182;</a></h3><ol>
<li>大家先思考一个问题，你给高德的地址和他给你的，是不是它大气的多？</li>
<li>这些细节哪些是有用的？假设用户给你一个地址，和一定的诉求，我们是不是可以推荐一些POI地址？</li>
</ol>
<p><img src="http://static.leiphone.com/uploads/new/article/740_740/201612/5860bb12da0e0.png?imageMogr2/format/jpg/quality/90" alt=""></p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[289]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># A-3 分析细节</span>

<span class="c1">#aois pois 请求参数 extensions 为 all 时返回如下内容 同一等级的参数</span>

<span class="n">roads</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大逆地理编码_all</span><span class="p">[</span><span class="s1">&#39;regeocode&#39;</span><span class="p">][</span><span class="s1">&#39;roads&#39;</span><span class="p">])</span>
<span class="n">addressComponent</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大逆地理编码_all</span><span class="p">[</span><span class="s1">&#39;regeocode&#39;</span><span class="p">][</span><span class="s1">&#39;addressComponent&#39;</span><span class="p">])</span>
<span class="n">roadinters</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大逆地理编码_all</span><span class="p">[</span><span class="s1">&#39;regeocode&#39;</span><span class="p">][</span><span class="s1">&#39;roadinters&#39;</span><span class="p">])</span>
<span class="n">aois</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大逆地理编码_all</span><span class="p">[</span><span class="s1">&#39;regeocode&#39;</span><span class="p">][</span><span class="s1">&#39;aois&#39;</span><span class="p">])</span>
<span class="n">pois</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大逆地理编码_all</span><span class="p">[</span><span class="s1">&#39;regeocode&#39;</span><span class="p">][</span><span class="s1">&#39;pois&#39;</span><span class="p">])</span>
<span class="n">display</span><span class="p">(</span><span class="n">roads</span><span class="p">,</span><span class="n">addressComponent</span><span class="p">,</span><span class="n">roadinters</span><span class="p">,</span><span class="n">aois</span><span class="p">,</span><span class="n">pois</span><span class="p">)</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>id</th>
      <th>location</th>
      <th>direction</th>
      <th>name</th>
      <th>distance</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>020F49F0110431139</td>
      <td>113.291,23.0927</td>
      <td>北</td>
      <td>新港西路</td>
      <td>221.936</td>
    </tr>
    <tr>
      <th>1</th>
      <td>020F49F011043846</td>
      <td>113.285,23.0938</td>
      <td>东</td>
      <td>东晓路辅路</td>
      <td>680.156</td>
    </tr>
    <tr>
      <th>2</th>
      <td>020F49F0120434892</td>
      <td>113.297,23.091</td>
      <td>西北</td>
      <td>瑞康路</td>
      <td>696.132</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>city</th>
      <th>province</th>
      <th>adcode</th>
      <th>district</th>
      <th>towncode</th>
      <th>country</th>
      <th>township</th>
      <th>businessAreas</th>
      <th>citycode</th>
      <th>streetNumber.number</th>
      <th>streetNumber.location</th>
      <th>streetNumber.direction</th>
      <th>streetNumber.distance</th>
      <th>streetNumber.street</th>
      <th>building.name</th>
      <th>building.type</th>
      <th>neighborhood.name</th>
      <th>neighborhood.type</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>广州市</td>
      <td>广东省</td>
      <td>440105</td>
      <td>海珠区</td>
      <td>440105002000</td>
      <td>中国</td>
      <td>新港街道</td>
      <td>[{'location': '113.31655,23.094556', 'name': '...</td>
      <td>020</td>
      <td>150号</td>
      <td>113.290206,23.0954111</td>
      <td>西北</td>
      <td>152.584</td>
      <td>怡乐路</td>
      <td>博济康之选药店(蒲园路)</td>
      <td>医疗保健服务;医药保健销售店;药房</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>second_name</th>
      <th>first_id</th>
      <th>second_id</th>
      <th>location</th>
      <th>distance</th>
      <th>first_name</th>
      <th>direction</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>园西路</td>
      <td>020F49F01104310196</td>
      <td>020F49F01104310230</td>
      <td>113.2916172,23.09375833</td>
      <td>96.9926</td>
      <td>蒲园路</td>
      <td>北</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>area</th>
      <th>type</th>
      <th>id</th>
      <th>location</th>
      <th>adcode</th>
      <th>name</th>
      <th>distance</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>968572.518602</td>
      <td>141201</td>
      <td>B00141IHRZ</td>
      <td>113.298415,23.096714</td>
      <td>440105</td>
      <td>中山大学广州校区南校园</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>11159.027838</td>
      <td>141202</td>
      <td>B00140V07R</td>
      <td>113.29102,23.093801</td>
      <td>440105</td>
      <td>中山大学附属中学</td>
      <td>41.6322</td>
    </tr>
    <tr>
      <th>2</th>
      <td>6761.661316</td>
      <td>141203</td>
      <td>B00140TFUF</td>
      <td>113.290511,23.094417</td>
      <td>440105</td>
      <td>中山大学南校区附属小学</td>
      <td>46.7589</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>id</th>
      <th>direction</th>
      <th>businessarea</th>
      <th>address</th>
      <th>poiweight</th>
      <th>name</th>
      <th>location</th>
      <th>distance</th>
      <th>tel</th>
      <th>type</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>B00140V07R</td>
      <td>西南</td>
      <td>新港</td>
      <td>新港西路135号</td>
      <td>0.467769</td>
      <td>中山大学附属中学</td>
      <td>113.29102,23.093801</td>
      <td>98.8474</td>
      <td>020-84112518;020-84113971</td>
      <td>科教文化服务;学校;中学</td>
    </tr>
    <tr>
      <th>1</th>
      <td>B00140TFUF</td>
      <td>西</td>
      <td>新港</td>
      <td>新港西路135号中山大学南校区</td>
      <td>0.384976</td>
      <td>中山大学南校区附属小学</td>
      <td>113.290511,23.094417</td>
      <td>95.2493</td>
      <td>[]</td>
      <td>科教文化服务;学校;小学</td>
    </tr>
    <tr>
      <th>2</th>
      <td>B00140WDN8</td>
      <td>东南</td>
      <td>新港</td>
      <td>新港西路135号大院中大蒲园区634号首层</td>
      <td>0.384563</td>
      <td>中国建设银行(中山大学支行)</td>
      <td>113.291972,23.093306</td>
      <td>155.784</td>
      <td>020-34049809;020-34049821</td>
      <td>金融保险服务;银行;中国建设银行</td>
    </tr>
    <tr>
      <th>3</th>
      <td>B001423QC8</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中大园西区719栋103</td>
      <td>0.185048</td>
      <td>中山大学南校区-优数教育</td>
      <td>113.291460,23.094467</td>
      <td>16.5955</td>
      <td>020-84034574;18998491778</td>
      <td>科教文化服务;培训机构;培训机构</td>
    </tr>
    <tr>
      <th>4</th>
      <td>B00140KDZ6</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中山大学国家大学科技园B座13层</td>
      <td>0.281905</td>
      <td>中国大学生创业园海珠园区</td>
      <td>113.29106,23.093049</td>
      <td>177.538</td>
      <td>[]</td>
      <td>商务住宅;产业园区;产业园区</td>
    </tr>
    <tr>
      <th>5</th>
      <td>B00141SB7V</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中大科技综合楼B座1层</td>
      <td>0.419527</td>
      <td>上海浦东发展银行(中大支行)</td>
      <td>113.291131,23.092970</td>
      <td>184.837</td>
      <td>020-84115789;020-84115778</td>
      <td>金融保险服务;银行;上海浦东发展银行</td>
    </tr>
    <tr>
      <th>6</th>
      <td>B00141U846</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号</td>
      <td>0.252779</td>
      <td>中山大学广州南校区科技园</td>
      <td>113.291983,23.092881</td>
      <td>200.87</td>
      <td>020-84115999</td>
      <td>商务住宅;产业园区;产业园区</td>
    </tr>
    <tr>
      <th>7</th>
      <td>B00140KFAV</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中大科技综合楼A座102室</td>
      <td>0.525081</td>
      <td>中国银行(广州中山大学支行)</td>
      <td>113.291948,23.092797</td>
      <td>208.893</td>
      <td>020-84113688;020-84113768</td>
      <td>金融保险服务;银行;中国银行</td>
    </tr>
    <tr>
      <th>8</th>
      <td>B00140U8SD</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号</td>
      <td>0.337242</td>
      <td>中山大学国家大学科技园B座</td>
      <td>113.291126,23.093053</td>
      <td>175.811</td>
      <td>[]</td>
      <td>商务住宅;楼宇;商务写字楼</td>
    </tr>
    <tr>
      <th>9</th>
      <td>B0FFG30WP6</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中山大学南校区</td>
      <td>0.28826</td>
      <td>中山大学广州南校区科技综合楼2期</td>
      <td>113.290937,23.093079</td>
      <td>177.348</td>
      <td>[]</td>
      <td>商务住宅;楼宇;商务写字楼</td>
    </tr>
    <tr>
      <th>10</th>
      <td>B00141JGF2</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号</td>
      <td>0.317136</td>
      <td>中山大学国家大学科技园A座</td>
      <td>113.291676,23.092961</td>
      <td>185.369</td>
      <td>020-84115999</td>
      <td>商务住宅;楼宇;商务写字楼</td>
    </tr>
    <tr>
      <th>11</th>
      <td>B00140U3D6</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中山大学蒲园区634号1楼南</td>
      <td>0.320061</td>
      <td>广州中大建筑设计研究院(暂停营业)</td>
      <td>113.291800,23.093217</td>
      <td>159.878</td>
      <td>[]</td>
      <td>科教文化服务;科研机构;科研机构</td>
    </tr>
    <tr>
      <th>12</th>
      <td>B00140FY1X</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中山大学国家大学科技园B座8层806-807</td>
      <td>0.36933</td>
      <td>中山大学广东发展研究院</td>
      <td>113.291126,23.093053</td>
      <td>175.811</td>
      <td>[]</td>
      <td>科教文化服务;科研机构;科研机构</td>
    </tr>
    <tr>
      <th>13</th>
      <td>B0FFFDBVOY</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中山大学园西路附近</td>
      <td>0.340143</td>
      <td>中山大学附属中学招生办</td>
      <td>113.291775,23.093559</td>
      <td>122.571</td>
      <td>020-84111796</td>
      <td>科教文化服务;学校;中学</td>
    </tr>
    <tr>
      <th>14</th>
      <td>B0FFG4HZXN</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中山大学蒲园区634号楼</td>
      <td>0.221615</td>
      <td>中国基本建设优化研究会医院建设优化研究所</td>
      <td>113.291801,23.093216</td>
      <td>159.996</td>
      <td>[]</td>
      <td>科教文化服务;科研机构;科研机构</td>
    </tr>
    <tr>
      <th>15</th>
      <td>B00140U3D7</td>
      <td>东</td>
      <td>新港</td>
      <td>大榕路与蒲园路交叉口西200米</td>
      <td>0.47545</td>
      <td>西翠园</td>
      <td>113.293071,23.095130</td>
      <td>178.662</td>
      <td>[]</td>
      <td>风景名胜;公园广场;公园</td>
    </tr>
    <tr>
      <th>16</th>
      <td>B0FFHN78MN</td>
      <td>东北</td>
      <td>新港</td>
      <td>新港西路中山大学南校园蒲园区665号</td>
      <td>0.179677</td>
      <td>中山大学广州校区南校园方润华楼</td>
      <td>113.293088,23.095840</td>
      <td>218.755</td>
      <td>020-84111293</td>
      <td>科教文化服务;学校;学校</td>
    </tr>
    <tr>
      <th>17</th>
      <td>B0FFLM8VDM</td>
      <td>西南</td>
      <td>新港</td>
      <td>新港西路135号中山大学国家科技园B座</td>
      <td>0.185496</td>
      <td>逸成教育海珠校区</td>
      <td>113.290781,23.093102</td>
      <td>180.023</td>
      <td>[]</td>
      <td>科教文化服务;培训机构;培训机构</td>
    </tr>
    <tr>
      <th>18</th>
      <td>B00140JHP2</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中山大学国家大学科技园B座6层612</td>
      <td>0.262655</td>
      <td>海珠区科技产业基地管理委员会办公室</td>
      <td>113.291126,23.093053</td>
      <td>175.811</td>
      <td>[]</td>
      <td>政府机构及社会团体;政府机关;区县级政府及事业单位</td>
    </tr>
    <tr>
      <th>19</th>
      <td>B0FFGCANBP</td>
      <td>北</td>
      <td>新港</td>
      <td>园西路与蒲园路交叉口西北150米</td>
      <td>0.1863</td>
      <td>中山大学-思涵少儿英语</td>
      <td>113.290871,23.096318</td>
      <td>197.885</td>
      <td>[]</td>
      <td>科教文化服务;培训机构;培训机构</td>
    </tr>
    <tr>
      <th>20</th>
      <td>B0FFFF4FVV</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中山大学国家科技园A座402号</td>
      <td>0.241473</td>
      <td>广东省总招生办中大办公室</td>
      <td>113.291858,23.092799</td>
      <td>206.484</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校|科教文化服务;学校;成人教育</td>
    </tr>
    <tr>
      <th>21</th>
      <td>B0FFFGX8UE</td>
      <td>南</td>
      <td>新港</td>
      <td>新港西路135号中山大学国家科技园A座402号</td>
      <td>0.18278</td>
      <td>中山大学-成人教育新生报名点</td>
      <td>113.292077,23.092767</td>
      <td>215.862</td>
      <td>020-84115953</td>
      <td>科教文化服务;学校;高等院校</td>
    </tr>
    <tr>
      <th>22</th>
      <td>B0FFHRN9RM</td>
      <td>西南</td>
      <td>新港</td>
      <td>新港西路89号(百佳超市正对面)</td>
      <td>0.187262</td>
      <td>中山大学南校区-方法教育</td>
      <td>113.290093,23.092960</td>
      <td>228.209</td>
      <td>020-34255811</td>
      <td>科教文化服务;培训机构;培训机构</td>
    </tr>
    <tr>
      <th>23</th>
      <td>B0FFG4GSC4</td>
      <td>东南</td>
      <td>新港</td>
      <td>新港西路135号中山大学园南路</td>
      <td>0.186094</td>
      <td>中山大学管理学院酒店管理培训中心</td>
      <td>113.292691,23.093097</td>
      <td>212.855</td>
      <td>[]</td>
      <td>科教文化服务;培训机构;培训机构</td>
    </tr>
    <tr>
      <th>24</th>
      <td>B00141IHWF</td>
      <td>西</td>
      <td>新港</td>
      <td>怡乐路怡乐七巷5号</td>
      <td>0.139721</td>
      <td>广州市海珠区司法局新港司法所</td>
      <td>113.289213,23.093933</td>
      <td>237.815</td>
      <td>020-89105496</td>
      <td>政府机构及社会团体;公检法机构;公检法机关</td>
    </tr>
    <tr>
      <th>25</th>
      <td>B00141SYWC</td>
      <td>东</td>
      <td>新港</td>
      <td>新港西路135号中山大学蒲园区614-106室</td>
      <td>0.11928</td>
      <td>中山大学南校区-格蕾思英语</td>
      <td>113.293720,23.094496</td>
      <td>235.809</td>
      <td>020-84037190</td>
      <td>科教文化服务;培训机构;培训机构</td>
    </tr>
    <tr>
      <th>26</th>
      <td>B00141RGVQ</td>
      <td>东南</td>
      <td>新港</td>
      <td>新港西路135号中山大学</td>
      <td>0.373551</td>
      <td>中山大学管理学院</td>
      <td>113.292377,23.093221</td>
      <td>183.062</td>
      <td>020-84112602</td>
      <td>科教文化服务;学校;高等院校</td>
    </tr>
    <tr>
      <th>27</th>
      <td>B0FFG4EQ88</td>
      <td>西南</td>
      <td>新港</td>
      <td>新港西路85号</td>
      <td>0.186094</td>
      <td>昭越教育</td>
      <td>113.289657,23.093065</td>
      <td>249.019</td>
      <td>020-86005006</td>
      <td>科教文化服务;培训机构;培训机构</td>
    </tr>
    <tr>
      <th>28</th>
      <td>B0FFGCARW8</td>
      <td>西</td>
      <td>新港</td>
      <td>怡乐七巷5</td>
      <td>0.117443</td>
      <td>海珠区新港街人民调解委员会</td>
      <td>113.289209,23.093931</td>
      <td>238.288</td>
      <td>[]</td>
      <td>政府机构及社会团体;政府机关;乡镇级政府及事业单位</td>
    </tr>
    <tr>
      <th>29</th>
      <td>B0FFG4G65O</td>
      <td>西</td>
      <td>新港</td>
      <td>怡乐路怡乐七巷5号</td>
      <td>0.109824</td>
      <td>怡乐社区居委会</td>
      <td>113.289148,23.094004</td>
      <td>241.814</td>
      <td>[]</td>
      <td>政府机构及社会团体;政府机关;乡镇以下级政府及事业单位</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#23398;&#29983;&#32451;&#20064;&#65306;">&#23398;&#29983;&#32451;&#20064;&#65306;<a class="anchor-link" href="#&#23398;&#29983;&#32451;&#20064;&#65306;">&#182;</a></h3><ol>
<li>观察和练习其他参数</li>
<li>想得到更大范围的搜索POI如何操作</li>
<li><ul>
<li>请pandas学过的同学对address进行分组groupby练习，尝试找寻不同根类地址下的type（可选用你所找寻的地址，不一定用中大南方）</li>
</ul>
</li>
<li><ul>
<li>请思考如何对不同类型的服务进行分类？如美食、旅馆、加油站...等
<img src="lianxi01.png" alt=""></li>
</ul>
</li>
</ol>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[290]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># 上面 A-2 Extra 全部逆地理编码分析</span>

<span class="n">中大逆地理编码_all</span> <span class="o">=</span> <span class="n">regeocode</span><span class="p">(</span><span class="n">中大地理编码</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s2">&quot;all&quot;</span><span class="p">,</span><span class="n">radius</span><span class="o">=</span> <span class="mi">3000</span><span class="p">,</span><span class="n">roadlevel</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">中大逆地理编码_all</span><span class="p">)</span>
<span class="n">df_中大逆地理编码_all</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大逆地理编码_all</span><span class="p">)</span>
<span class="n">display</span><span class="p">(</span><span class="n">df_中大逆地理编码_all</span><span class="p">)</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>{&#39;status&#39;: &#39;1&#39;, &#39;regeocode&#39;: {&#39;roads&#39;: [{&#39;id&#39;: &#39;020F49F0110431139&#39;, &#39;location&#39;: &#39;113.291,23.0927&#39;, &#39;direction&#39;: &#39;北&#39;, &#39;name&#39;: &#39;新港西路&#39;, &#39;distance&#39;: &#39;221.936&#39;}, {&#39;id&#39;: &#39;020F49F011043846&#39;, &#39;location&#39;: &#39;113.285,23.0938&#39;, &#39;direction&#39;: &#39;东&#39;, &#39;name&#39;: &#39;东晓路辅路&#39;, &#39;distance&#39;: &#39;680.156&#39;}, {&#39;id&#39;: &#39;020F49F0120434892&#39;, &#39;location&#39;: &#39;113.297,23.091&#39;, &#39;direction&#39;: &#39;西北&#39;, &#39;name&#39;: &#39;瑞康路&#39;, &#39;distance&#39;: &#39;696.132&#39;}], &#39;roadinters&#39;: [{&#39;second_name&#39;: &#39;园西路&#39;, &#39;first_id&#39;: &#39;020F49F01104310196&#39;, &#39;second_id&#39;: &#39;020F49F01104310230&#39;, &#39;location&#39;: &#39;113.2916172,23.09375833&#39;, &#39;distance&#39;: &#39;96.9926&#39;, &#39;first_name&#39;: &#39;蒲园路&#39;, &#39;direction&#39;: &#39;北&#39;}], &#39;formatted_address&#39;: &#39;广东省广州市海珠区新港街道博济康之选药店(蒲园路)中山大学广州校区南校园&#39;, &#39;addressComponent&#39;: {&#39;city&#39;: &#39;广州市&#39;, &#39;province&#39;: &#39;广东省&#39;, &#39;adcode&#39;: &#39;440105&#39;, &#39;district&#39;: &#39;海珠区&#39;, &#39;towncode&#39;: &#39;440105002000&#39;, &#39;streetNumber&#39;: {&#39;number&#39;: &#39;150号&#39;, &#39;location&#39;: &#39;113.290206,23.0954111&#39;, &#39;direction&#39;: &#39;西北&#39;, &#39;distance&#39;: &#39;152.584&#39;, &#39;street&#39;: &#39;怡乐路&#39;}, &#39;country&#39;: &#39;中国&#39;, &#39;township&#39;: &#39;新港街道&#39;, &#39;businessAreas&#39;: [{&#39;location&#39;: &#39;113.31655,23.094556&#39;, &#39;name&#39;: &#39;新港&#39;, &#39;id&#39;: &#39;440105&#39;}, {&#39;location&#39;: &#39;113.281913,23.092278&#39;, &#39;name&#39;: &#39;晓港&#39;, &#39;id&#39;: &#39;440105&#39;}, {&#39;location&#39;: &#39;113.296737,23.085197&#39;, &#39;name&#39;: &#39;凤阳&#39;, &#39;id&#39;: &#39;440105&#39;}], &#39;building&#39;: {&#39;name&#39;: &#39;博济康之选药店(蒲园路)&#39;, &#39;type&#39;: &#39;医疗保健服务;医药保健销售店;药房&#39;}, &#39;neighborhood&#39;: {&#39;name&#39;: [], &#39;type&#39;: []}, &#39;citycode&#39;: &#39;020&#39;}, &#39;aois&#39;: [{&#39;area&#39;: &#39;968572.518602&#39;, &#39;type&#39;: &#39;141201&#39;, &#39;id&#39;: &#39;B00141IHRZ&#39;, &#39;location&#39;: &#39;113.298415,23.096714&#39;, &#39;adcode&#39;: &#39;440105&#39;, &#39;name&#39;: &#39;中山大学广州校区南校园&#39;, &#39;distance&#39;: &#39;0&#39;}, {&#39;area&#39;: &#39;11159.027838&#39;, &#39;type&#39;: &#39;141202&#39;, &#39;id&#39;: &#39;B00140V07R&#39;, &#39;location&#39;: &#39;113.29102,23.093801&#39;, &#39;adcode&#39;: &#39;440105&#39;, &#39;name&#39;: &#39;中山大学附属中学&#39;, &#39;distance&#39;: &#39;41.6322&#39;}, {&#39;area&#39;: &#39;6761.661316&#39;, &#39;type&#39;: &#39;141203&#39;, &#39;id&#39;: &#39;B00140TFUF&#39;, &#39;location&#39;: &#39;113.290511,23.094417&#39;, &#39;adcode&#39;: &#39;440105&#39;, &#39;name&#39;: &#39;中山大学南校区附属小学&#39;, &#39;distance&#39;: &#39;46.7589&#39;}], &#39;pois&#39;: [{&#39;id&#39;: &#39;B00140V07R&#39;, &#39;direction&#39;: &#39;西南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号&#39;, &#39;poiweight&#39;: &#39;0.467769&#39;, &#39;name&#39;: &#39;中山大学附属中学&#39;, &#39;location&#39;: &#39;113.29102,23.093801&#39;, &#39;distance&#39;: &#39;98.8474&#39;, &#39;tel&#39;: &#39;020-84112518;020-84113971&#39;, &#39;type&#39;: &#39;科教文化服务;学校;中学&#39;}, {&#39;id&#39;: &#39;B00140TFUF&#39;, &#39;direction&#39;: &#39;西&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学南校区&#39;, &#39;poiweight&#39;: &#39;0.384976&#39;, &#39;name&#39;: &#39;中山大学南校区附属小学&#39;, &#39;location&#39;: &#39;113.290511,23.094417&#39;, &#39;distance&#39;: &#39;95.2493&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;学校;小学&#39;}, {&#39;id&#39;: &#39;B00140WDN8&#39;, &#39;direction&#39;: &#39;东南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号大院中大蒲园区634号首层&#39;, &#39;poiweight&#39;: &#39;0.384563&#39;, &#39;name&#39;: &#39;中国建设银行(中山大学支行)&#39;, &#39;location&#39;: &#39;113.291972,23.093306&#39;, &#39;distance&#39;: &#39;155.784&#39;, &#39;tel&#39;: &#39;020-34049809;020-34049821&#39;, &#39;type&#39;: &#39;金融保险服务;银行;中国建设银行&#39;}, {&#39;id&#39;: &#39;B001423QC8&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中大园西区719栋103&#39;, &#39;poiweight&#39;: &#39;0.185048&#39;, &#39;name&#39;: &#39;中山大学南校区-优数教育&#39;, &#39;location&#39;: &#39;113.291460,23.094467&#39;, &#39;distance&#39;: &#39;16.5955&#39;, &#39;tel&#39;: &#39;020-84034574;18998491778&#39;, &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B00140KDZ6&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家大学科技园B座13层&#39;, &#39;poiweight&#39;: &#39;0.281905&#39;, &#39;name&#39;: &#39;中国大学生创业园海珠园区&#39;, &#39;location&#39;: &#39;113.29106,23.093049&#39;, &#39;distance&#39;: &#39;177.538&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;商务住宅;产业园区;产业园区&#39;}, {&#39;id&#39;: &#39;B00141SB7V&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中大科技综合楼B座1层&#39;, &#39;poiweight&#39;: &#39;0.419527&#39;, &#39;name&#39;: &#39;上海浦东发展银行(中大支行)&#39;, &#39;location&#39;: &#39;113.291131,23.092970&#39;, &#39;distance&#39;: &#39;184.837&#39;, &#39;tel&#39;: &#39;020-84115789;020-84115778&#39;, &#39;type&#39;: &#39;金融保险服务;银行;上海浦东发展银行&#39;}, {&#39;id&#39;: &#39;B00141U846&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号&#39;, &#39;poiweight&#39;: &#39;0.252779&#39;, &#39;name&#39;: &#39;中山大学广州南校区科技园&#39;, &#39;location&#39;: &#39;113.291983,23.092881&#39;, &#39;distance&#39;: &#39;200.87&#39;, &#39;tel&#39;: &#39;020-84115999&#39;, &#39;type&#39;: &#39;商务住宅;产业园区;产业园区&#39;}, {&#39;id&#39;: &#39;B00140KFAV&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中大科技综合楼A座102室&#39;, &#39;poiweight&#39;: &#39;0.525081&#39;, &#39;name&#39;: &#39;中国银行(广州中山大学支行)&#39;, &#39;location&#39;: &#39;113.291948,23.092797&#39;, &#39;distance&#39;: &#39;208.893&#39;, &#39;tel&#39;: &#39;020-84113688;020-84113768&#39;, &#39;type&#39;: &#39;金融保险服务;银行;中国银行&#39;}, {&#39;id&#39;: &#39;B00140U8SD&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号&#39;, &#39;poiweight&#39;: &#39;0.337242&#39;, &#39;name&#39;: &#39;中山大学国家大学科技园B座&#39;, &#39;location&#39;: &#39;113.291126,23.093053&#39;, &#39;distance&#39;: &#39;175.811&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;商务住宅;楼宇;商务写字楼&#39;}, {&#39;id&#39;: &#39;B0FFG30WP6&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学南校区&#39;, &#39;poiweight&#39;: &#39;0.28826&#39;, &#39;name&#39;: &#39;中山大学广州南校区科技综合楼2期&#39;, &#39;location&#39;: &#39;113.290937,23.093079&#39;, &#39;distance&#39;: &#39;177.348&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;商务住宅;楼宇;商务写字楼&#39;}, {&#39;id&#39;: &#39;B00141JGF2&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号&#39;, &#39;poiweight&#39;: &#39;0.317136&#39;, &#39;name&#39;: &#39;中山大学国家大学科技园A座&#39;, &#39;location&#39;: &#39;113.291676,23.092961&#39;, &#39;distance&#39;: &#39;185.369&#39;, &#39;tel&#39;: &#39;020-84115999&#39;, &#39;type&#39;: &#39;商务住宅;楼宇;商务写字楼&#39;}, {&#39;id&#39;: &#39;B00140U3D6&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学蒲园区634号1楼南&#39;, &#39;poiweight&#39;: &#39;0.320061&#39;, &#39;name&#39;: &#39;广州中大建筑设计研究院(暂停营业)&#39;, &#39;location&#39;: &#39;113.291800,23.093217&#39;, &#39;distance&#39;: &#39;159.878&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;科研机构;科研机构&#39;}, {&#39;id&#39;: &#39;B00140FY1X&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家大学科技园B座8层806-807&#39;, &#39;poiweight&#39;: &#39;0.36933&#39;, &#39;name&#39;: &#39;中山大学广东发展研究院&#39;, &#39;location&#39;: &#39;113.291126,23.093053&#39;, &#39;distance&#39;: &#39;175.811&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;科研机构;科研机构&#39;}, {&#39;id&#39;: &#39;B0FFFDBVOY&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学园西路附近&#39;, &#39;poiweight&#39;: &#39;0.340143&#39;, &#39;name&#39;: &#39;中山大学附属中学招生办&#39;, &#39;location&#39;: &#39;113.291775,23.093559&#39;, &#39;distance&#39;: &#39;122.571&#39;, &#39;tel&#39;: &#39;020-84111796&#39;, &#39;type&#39;: &#39;科教文化服务;学校;中学&#39;}, {&#39;id&#39;: &#39;B0FFG4HZXN&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学蒲园区634号楼&#39;, &#39;poiweight&#39;: &#39;0.221615&#39;, &#39;name&#39;: &#39;中国基本建设优化研究会医院建设优化研究所&#39;, &#39;location&#39;: &#39;113.291801,23.093216&#39;, &#39;distance&#39;: &#39;159.996&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;科研机构;科研机构&#39;}, {&#39;id&#39;: &#39;B00140U3D7&#39;, &#39;direction&#39;: &#39;东&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;大榕路与蒲园路交叉口西200米&#39;, &#39;poiweight&#39;: &#39;0.47545&#39;, &#39;name&#39;: &#39;西翠园&#39;, &#39;location&#39;: &#39;113.293071,23.095130&#39;, &#39;distance&#39;: &#39;178.662&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;风景名胜;公园广场;公园&#39;}, {&#39;id&#39;: &#39;B0FFHN78MN&#39;, &#39;direction&#39;: &#39;东北&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路中山大学南校园蒲园区665号&#39;, &#39;poiweight&#39;: &#39;0.179677&#39;, &#39;name&#39;: &#39;中山大学广州校区南校园方润华楼&#39;, &#39;location&#39;: &#39;113.293088,23.095840&#39;, &#39;distance&#39;: &#39;218.755&#39;, &#39;tel&#39;: &#39;020-84111293&#39;, &#39;type&#39;: &#39;科教文化服务;学校;学校&#39;}, {&#39;id&#39;: &#39;B0FFLM8VDM&#39;, &#39;direction&#39;: &#39;西南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家科技园B座&#39;, &#39;poiweight&#39;: &#39;0.185496&#39;, &#39;name&#39;: &#39;逸成教育海珠校区&#39;, &#39;location&#39;: &#39;113.290781,23.093102&#39;, &#39;distance&#39;: &#39;180.023&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B00140JHP2&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家大学科技园B座6层612&#39;, &#39;poiweight&#39;: &#39;0.262655&#39;, &#39;name&#39;: &#39;海珠区科技产业基地管理委员会办公室&#39;, &#39;location&#39;: &#39;113.291126,23.093053&#39;, &#39;distance&#39;: &#39;175.811&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;政府机构及社会团体;政府机关;区县级政府及事业单位&#39;}, {&#39;id&#39;: &#39;B0FFGCANBP&#39;, &#39;direction&#39;: &#39;北&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;园西路与蒲园路交叉口西北150米&#39;, &#39;poiweight&#39;: &#39;0.1863&#39;, &#39;name&#39;: &#39;中山大学-思涵少儿英语&#39;, &#39;location&#39;: &#39;113.290871,23.096318&#39;, &#39;distance&#39;: &#39;197.885&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B0FFFF4FVV&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家科技园A座402号&#39;, &#39;poiweight&#39;: &#39;0.241473&#39;, &#39;name&#39;: &#39;广东省总招生办中大办公室&#39;, &#39;location&#39;: &#39;113.291858,23.092799&#39;, &#39;distance&#39;: &#39;206.484&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;学校;高等院校|科教文化服务;学校;成人教育&#39;}, {&#39;id&#39;: &#39;B0FFFGX8UE&#39;, &#39;direction&#39;: &#39;南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学国家科技园A座402号&#39;, &#39;poiweight&#39;: &#39;0.18278&#39;, &#39;name&#39;: &#39;中山大学-成人教育新生报名点&#39;, &#39;location&#39;: &#39;113.292077,23.092767&#39;, &#39;distance&#39;: &#39;215.862&#39;, &#39;tel&#39;: &#39;020-84115953&#39;, &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;}, {&#39;id&#39;: &#39;B0FFHRN9RM&#39;, &#39;direction&#39;: &#39;西南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路89号(百佳超市正对面)&#39;, &#39;poiweight&#39;: &#39;0.187262&#39;, &#39;name&#39;: &#39;中山大学南校区-方法教育&#39;, &#39;location&#39;: &#39;113.290093,23.092960&#39;, &#39;distance&#39;: &#39;228.209&#39;, &#39;tel&#39;: &#39;020-34255811&#39;, &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B0FFG4GSC4&#39;, &#39;direction&#39;: &#39;东南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学园南路&#39;, &#39;poiweight&#39;: &#39;0.186094&#39;, &#39;name&#39;: &#39;中山大学管理学院酒店管理培训中心&#39;, &#39;location&#39;: &#39;113.292691,23.093097&#39;, &#39;distance&#39;: &#39;212.855&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B00141IHWF&#39;, &#39;direction&#39;: &#39;西&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;怡乐路怡乐七巷5号&#39;, &#39;poiweight&#39;: &#39;0.139721&#39;, &#39;name&#39;: &#39;广州市海珠区司法局新港司法所&#39;, &#39;location&#39;: &#39;113.289213,23.093933&#39;, &#39;distance&#39;: &#39;237.815&#39;, &#39;tel&#39;: &#39;020-89105496&#39;, &#39;type&#39;: &#39;政府机构及社会团体;公检法机构;公检法机关&#39;}, {&#39;id&#39;: &#39;B00141SYWC&#39;, &#39;direction&#39;: &#39;东&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学蒲园区614-106室&#39;, &#39;poiweight&#39;: &#39;0.11928&#39;, &#39;name&#39;: &#39;中山大学南校区-格蕾思英语&#39;, &#39;location&#39;: &#39;113.293720,23.094496&#39;, &#39;distance&#39;: &#39;235.809&#39;, &#39;tel&#39;: &#39;020-84037190&#39;, &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B00141RGVQ&#39;, &#39;direction&#39;: &#39;东南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路135号中山大学&#39;, &#39;poiweight&#39;: &#39;0.373551&#39;, &#39;name&#39;: &#39;中山大学管理学院&#39;, &#39;location&#39;: &#39;113.292377,23.093221&#39;, &#39;distance&#39;: &#39;183.062&#39;, &#39;tel&#39;: &#39;020-84112602&#39;, &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;}, {&#39;id&#39;: &#39;B0FFG4EQ88&#39;, &#39;direction&#39;: &#39;西南&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;新港西路85号&#39;, &#39;poiweight&#39;: &#39;0.186094&#39;, &#39;name&#39;: &#39;昭越教育&#39;, &#39;location&#39;: &#39;113.289657,23.093065&#39;, &#39;distance&#39;: &#39;249.019&#39;, &#39;tel&#39;: &#39;020-86005006&#39;, &#39;type&#39;: &#39;科教文化服务;培训机构;培训机构&#39;}, {&#39;id&#39;: &#39;B0FFGCARW8&#39;, &#39;direction&#39;: &#39;西&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;怡乐七巷5&#39;, &#39;poiweight&#39;: &#39;0.117443&#39;, &#39;name&#39;: &#39;海珠区新港街人民调解委员会&#39;, &#39;location&#39;: &#39;113.289209,23.093931&#39;, &#39;distance&#39;: &#39;238.288&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;政府机构及社会团体;政府机关;乡镇级政府及事业单位&#39;}, {&#39;id&#39;: &#39;B0FFG4G65O&#39;, &#39;direction&#39;: &#39;西&#39;, &#39;businessarea&#39;: &#39;新港&#39;, &#39;address&#39;: &#39;怡乐路怡乐七巷5号&#39;, &#39;poiweight&#39;: &#39;0.109824&#39;, &#39;name&#39;: &#39;怡乐社区居委会&#39;, &#39;location&#39;: &#39;113.289148,23.094004&#39;, &#39;distance&#39;: &#39;241.814&#39;, &#39;tel&#39;: [], &#39;type&#39;: &#39;政府机构及社会团体;政府机关;乡镇以下级政府及事业单位&#39;}]}, &#39;info&#39;: &#39;OK&#39;, &#39;infocode&#39;: &#39;10000&#39;}
</pre>
</div>
</div>

<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>status</th>
      <th>info</th>
      <th>infocode</th>
      <th>regeocode.roads</th>
      <th>regeocode.roadinters</th>
      <th>regeocode.formatted_address</th>
      <th>regeocode.addressComponent.city</th>
      <th>regeocode.addressComponent.province</th>
      <th>regeocode.addressComponent.adcode</th>
      <th>regeocode.addressComponent.district</th>
      <th>...</th>
      <th>regeocode.addressComponent.country</th>
      <th>regeocode.addressComponent.township</th>
      <th>regeocode.addressComponent.businessAreas</th>
      <th>regeocode.addressComponent.building.name</th>
      <th>regeocode.addressComponent.building.type</th>
      <th>regeocode.addressComponent.neighborhood.name</th>
      <th>regeocode.addressComponent.neighborhood.type</th>
      <th>regeocode.addressComponent.citycode</th>
      <th>regeocode.aois</th>
      <th>regeocode.pois</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>OK</td>
      <td>10000</td>
      <td>[{'id': '020F49F0110431139', 'location': '113....</td>
      <td>[{'second_name': '园西路', 'first_id': '020F49F01...</td>
      <td>广东省广州市海珠区新港街道博济康之选药店(蒲园路)中山大学广州校区南校园</td>
      <td>广州市</td>
      <td>广东省</td>
      <td>440105</td>
      <td>海珠区</td>
      <td>...</td>
      <td>中国</td>
      <td>新港街道</td>
      <td>[{'location': '113.31655,23.094556', 'name': '...</td>
      <td>博济康之选药店(蒲园路)</td>
      <td>医疗保健服务;医药保健销售店;药房</td>
      <td>[]</td>
      <td>[]</td>
      <td>020</td>
      <td>[{'area': '968572.518602', 'type': '141201', '...</td>
      <td>[{'id': 'B00140V07R', 'direction': '西南', 'busi...</td>
    </tr>
  </tbody>
</table>
<p>1 rows × 26 columns</p>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#36335;&#24452;&#35268;&#21010;&#65288;&#28857;&#21040;&#28857;&#30340;&#36807;&#31243;&#65289;">&#36335;&#24452;&#35268;&#21010;&#65288;&#28857;&#21040;&#28857;&#30340;&#36807;&#31243;&#65289;<a class="anchor-link" href="#&#36335;&#24452;&#35268;&#21010;&#65288;&#28857;&#21040;&#28857;&#30340;&#36807;&#31243;&#65289;">&#182;</a></h2><h3 id="&#20135;&#21697;&#30340;&#35774;&#35745;&#24605;&#32500;">&#20135;&#21697;&#30340;&#35774;&#35745;&#24605;&#32500;<a class="anchor-link" href="#&#20135;&#21697;&#30340;&#35774;&#35745;&#24605;&#32500;">&#182;</a></h3><ol>
<li>请思考，什么样的产品需要路径规划？</li>
<li>如果你的产品需要，你会如何使用？</li>
<li><p>最优路线如何选择？高德会用到什么算法？（推荐系统）</p>
<ol>
<li>推荐系统输入location么？（起点、终点？还是全部点？）</li>
<li>实时的定位？（多长时间定位一次）更新1</li>
<li>定位完成其他点的变化？距离的选择（用户希望路边有更多的需求还是希望快速找到目的地？）</li>
<li>以上思考的越多，你的产品考虑的会越周全，避免产品后期的大量更改。</li>
</ol>
</li>
<li><p>可能了解的知识面，不需要清楚怎么做，但可以了解输入输出的结果是什么。参考如下图</p>
</li>
</ol>
<p><img src="http://imgtec.eetrend.com/files/2019-03/%E5%8D%9A%E5%AE%A2/100018447-63696-10.jpg" alt=""></p>
<hr>
<p><img src="https://pic2.zhimg.com/50/v2-45a26a9985308d90405dea78e6892dd0_r.jpg" alt=""></p>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>思考：现在的物流行业也是非常的发达，要是能够有像是路线规划的机器人配送，那么物流速度与准确度也会大大提高，通过无人飞行器收集的航空图像生成的图片对比，再加上高德API路径规划，两者所得出数据的整合，便可用于规划物流机器人的节能路径。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#27493;&#34892;&#36335;&#24452;&#35268;&#21010;&#65288;API&#22522;&#26412;&#27969;&#31243;&#65289;&#65288;&#20195;&#30721;B&#65289;">&#27493;&#34892;&#36335;&#24452;&#35268;&#21010;&#65288;API&#22522;&#26412;&#27969;&#31243;&#65289;&#65288;&#20195;&#30721;B&#65289;<a class="anchor-link" href="#&#27493;&#34892;&#36335;&#24452;&#35268;&#21010;&#65288;API&#22522;&#26412;&#27969;&#31243;&#65289;&#65288;&#20195;&#30721;B&#65289;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="B-1-&#20934;&#22791;base-url&#12289;params&#12289;response.json&#65288;&#65289;">B-1 &#20934;&#22791;base url&#12289;params&#12289;response.json&#65288;&#65289;<a class="anchor-link" href="#B-1-&#20934;&#22791;base-url&#12289;params&#12289;response.json&#65288;&#65289;">&#182;</a></h4>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[351]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># B-1 准备base url、params、response.json（） </span>
<span class="k">def</span> <span class="nf">walking</span><span class="p">(</span><span class="n">origin</span><span class="p">,</span><span class="n">destination</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/direction/walking?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span> <span class="c1">#请求参数</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;origin&#39;</span><span class="p">:</span><span class="n">origin</span><span class="p">,</span>
        <span class="s1">&#39;destination&#39;</span><span class="p">:</span><span class="n">destination</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="B-2-&#20934;&#22791;walking-&#21442;&#25968;">B-2 &#20934;&#22791;walking &#21442;&#25968;<a class="anchor-link" href="#B-2-&#20934;&#22791;walking-&#21442;&#25968;">&#182;</a></h4><p>请同学们尝试从A-3细节中获取的某两个教学楼的location，尝试步行路径规划（起点）🙅-----&gt;（终点）🙅‍</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[352]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># B-2 准备walking 参数</span>
<span class="n">广州塔</span> <span class="o">=</span> <span class="n">geocode</span><span class="p">(</span><span class="s1">&#39;广东省广州市海珠区广州塔&#39;</span><span class="p">)</span>
<span class="n">广州塔</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[352]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;info&#39;: &#39;OK&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;count&#39;: &#39;1&#39;,
 &#39;geocodes&#39;: [{&#39;formatted_address&#39;: &#39;广东省广州市海珠区&#39;,
   &#39;country&#39;: &#39;中国&#39;,
   &#39;province&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;city&#39;: &#39;广州市&#39;,
   &#39;district&#39;: &#39;海珠区&#39;,
   &#39;township&#39;: [],
   &#39;neighborhood&#39;: {&#39;name&#39;: [], &#39;type&#39;: []},
   &#39;building&#39;: {&#39;name&#39;: [], &#39;type&#39;: []},
   &#39;adcode&#39;: &#39;440105&#39;,
   &#39;street&#39;: [],
   &#39;number&#39;: [],
   &#39;location&#39;: &#39;113.317388,23.083801&#39;,
   &#39;level&#39;: &#39;区县&#39;}]}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[349]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">广州塔_location</span> <span class="o">=</span> <span class="n">广州塔</span><span class="p">[</span><span class="s1">&#39;geocodes&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;location&#39;</span><span class="p">]</span>
<span class="n">中大_location</span> <span class="o">=</span> <span class="n">中大</span><span class="p">[</span><span class="s1">&#39;geocodes&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;location&#39;</span><span class="p">]</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;(起点)中大_location:&quot;</span><span class="p">,</span><span class="n">中大_location</span><span class="p">,</span><span class="s2">&quot;(终点)广州塔_location:&quot;</span><span class="p">,</span><span class="n">广州塔_location</span><span class="p">)</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>(起点)中大_location: 113.291418,23.094611 (终点)广州塔_location: 113.317388,23.083801
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="B-3-&#23454;&#29616;&#27493;&#34892;&#36335;&#24452;&#35268;&#21010;">B-3 &#23454;&#29616;&#27493;&#34892;&#36335;&#24452;&#35268;&#21010;<a class="anchor-link" href="#B-3-&#23454;&#29616;&#27493;&#34892;&#36335;&#24452;&#35268;&#21010;">&#182;</a></h4>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[344]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># B-3 路径规划</span>
<span class="n">中大_广州塔</span> <span class="o">=</span> <span class="n">walking</span><span class="p">(</span><span class="n">中大_location</span><span class="p">,</span><span class="n">广州塔_location</span><span class="p">)</span>
<span class="n">中大_广州塔</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[344]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;info&#39;: &#39;ok&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;count&#39;: &#39;1&#39;,
 &#39;route&#39;: {&#39;origin&#39;: &#39;113.291418,23.094611&#39;,
  &#39;destination&#39;: &#39;113.317388,23.083801&#39;,
  &#39;paths&#39;: [{&#39;distance&#39;: &#39;4310&#39;,
    &#39;duration&#39;: &#39;3448&#39;,
    &#39;steps&#39;: [{&#39;instruction&#39;: &#39;沿园西路向南步行191米左转&#39;,
      &#39;orientation&#39;: &#39;南&#39;,
      &#39;road&#39;: &#39;园西路&#39;,
      &#39;distance&#39;: &#39;191&#39;,
      &#39;duration&#39;: &#39;153&#39;,
      &#39;polyline&#39;: &#39;113.291745,23.09428;113.29168,23.094006;113.29168,23.094006;113.291619,23.093763;113.291619,23.093763;113.291458,23.093173;113.291458,23.093173;113.291424,23.093021;113.291424,23.093021;113.291393,23.092873;113.291393,23.092873;113.291315,23.092591&#39;,
      &#39;action&#39;: &#39;左转&#39;,
      &#39;assistant_action&#39;: [],
      &#39;walk_type&#39;: &#39;0&#39;},
     {&#39;instruction&#39;: &#39;沿新港西路向东步行2151米向右前方行走&#39;,
      &#39;orientation&#39;: &#39;东&#39;,
      &#39;road&#39;: &#39;新港西路&#39;,
      &#39;distance&#39;: &#39;2151&#39;,
      &#39;duration&#39;: &#39;1721&#39;,
      &#39;polyline&#39;: &#39;113.291311,23.092587;113.291997,23.092413;113.291997,23.092413;113.292088,23.092391;113.292088,23.092391;113.292339,23.092318;113.292339,23.092318;113.292556,23.092261;113.292556,23.092261;113.292799,23.092196;113.292799,23.092196;113.293173,23.092096;113.293173,23.092096;113.293568,23.091988;113.293568,23.091988;113.293754,23.09194;113.293754,23.09194;113.293997,23.091871;113.293997,23.091871;113.29592,23.091332;113.29592,23.091332;113.297001,23.091042;113.297001,23.091042;113.297313,23.090951;113.297721,23.090898;113.297917,23.090894;113.298186,23.090929;113.298186,23.090929;113.298689,23.091107;113.298689,23.091107;113.298971,23.091211;113.298971,23.091211;113.299141,23.091272;113.299141,23.091272;113.299345,23.091337;113.299345,23.091337;113.299397,23.091359;113.299397,23.091359;113.300122,23.091619;113.300122,23.091619;113.300495,23.091806;113.300816,23.092018;113.300816,23.092018;113.30125,23.092387;113.30125,23.092387;113.302639,23.093529;113.302639,23.093529;113.302826,23.093672;113.302826,23.093672;113.303242,23.094028;113.303242,23.094028;113.303876,23.094557;113.303876,23.094557;113.304214,23.094783;113.304427,23.094891;113.304718,23.094983;113.304983,23.095022;113.304983,23.095022;113.305095,23.095035;113.305095,23.095035;113.305677,23.095095;113.305677,23.095095;113.306128,23.095148;113.306128,23.095148;113.306324,23.095174;113.306324,23.095174;113.307431,23.095291;113.307431,23.095291;113.307713,23.095321;113.307713,23.095321;113.307921,23.095339;113.307921,23.095339;113.307964,23.095347;113.307964,23.095347;113.308294,23.095378;113.308294,23.095378;113.30885,23.095425;113.30885,23.095425;113.309601,23.095495;113.309601,23.095495;113.310178,23.095543;113.310178,23.095543;113.310499,23.095564;113.310499,23.095564;113.310668,23.095582;113.310668,23.095582;113.31076,23.09559&#39;,
      &#39;action&#39;: &#39;向右前方行走&#39;,
      &#39;assistant_action&#39;: [],
      &#39;walk_type&#39;: &#39;0&#39;},
     {&#39;instruction&#39;: &#39;步行10米左转&#39;,
      &#39;orientation&#39;: [],
      &#39;road&#39;: [],
      &#39;distance&#39;: &#39;10&#39;,
      &#39;duration&#39;: &#39;8&#39;,
      &#39;polyline&#39;: &#39;113.31076,23.09559;113.310773,23.095495&#39;,
      &#39;action&#39;: &#39;左转&#39;,
      &#39;assistant_action&#39;: [],
      &#39;walk_type&#39;: &#39;1&#39;},
     {&#39;instruction&#39;: &#39;沿新港西路向东步行148米向右前方行走&#39;,
      &#39;orientation&#39;: &#39;东&#39;,
      &#39;road&#39;: &#39;新港西路&#39;,
      &#39;distance&#39;: &#39;148&#39;,
      &#39;duration&#39;: &#39;118&#39;,
      &#39;polyline&#39;: &#39;113.310773,23.09549;113.310881,23.095503;113.310881,23.095503;113.311233,23.095516;113.311233,23.095516;113.311645,23.095543;113.311645,23.095543;113.31224,23.095577&#39;,
      &#39;action&#39;: &#39;向右前方行走&#39;,
      &#39;assistant_action&#39;: [],
      &#39;walk_type&#39;: &#39;0&#39;},
     {&#39;instruction&#39;: &#39;沿新港西路向东步行113米&#39;,
      &#39;orientation&#39;: &#39;东&#39;,
      &#39;road&#39;: &#39;新港西路&#39;,
      &#39;distance&#39;: &#39;113&#39;,
      &#39;duration&#39;: &#39;90&#39;,
      &#39;polyline&#39;: &#39;113.31224,23.095577;113.312452,23.09553;113.312452,23.09553;113.313329,23.095543&#39;,
      &#39;action&#39;: [],
      &#39;assistant_action&#39;: [],
      &#39;walk_type&#39;: &#39;0&#39;},
     {&#39;instruction&#39;: &#39;沿新港西路向东步行151米向左前方行走&#39;,
      &#39;orientation&#39;: &#39;东&#39;,
      &#39;road&#39;: &#39;新港西路&#39;,
      &#39;distance&#39;: &#39;151&#39;,
      &#39;duration&#39;: &#39;121&#39;,
      &#39;polyline&#39;: &#39;113.313329,23.095543;113.313572,23.095516;113.313572,23.095516;113.314427,23.095543;113.314427,23.095543;113.31467,23.095543;113.3148,23.095516&#39;,
      &#39;action&#39;: &#39;向左前方行走&#39;,
      &#39;assistant_action&#39;: [],
      &#39;walk_type&#39;: &#39;0&#39;},
     {&#39;instruction&#39;: &#39;沿新港中路向东步行102米右转&#39;,
      &#39;orientation&#39;: &#39;东&#39;,
      &#39;road&#39;: &#39;新港中路&#39;,
      &#39;distance&#39;: &#39;102&#39;,
      &#39;duration&#39;: &#39;82&#39;,
      &#39;polyline&#39;: &#39;113.3148,23.095512;113.315122,23.095638;113.315291,23.095668;113.315421,23.095647;113.315534,23.095595;113.315747,23.095543&#39;,
      &#39;action&#39;: &#39;右转&#39;,
      &#39;assistant_action&#39;: [],
      &#39;walk_type&#39;: &#39;0&#39;},
     {&#39;instruction&#39;: &#39;沿广州大道南向南步行1245米左转&#39;,
      &#39;orientation&#39;: &#39;南&#39;,
      &#39;road&#39;: &#39;广州大道南&#39;,
      &#39;distance&#39;: &#39;1245&#39;,
      &#39;duration&#39;: &#39;996&#39;,
      &#39;polyline&#39;: &#39;113.315747,23.095538;113.315616,23.09543;113.315569,23.095373;113.31553,23.095295;113.315495,23.095174;113.315495,23.095013;113.315616,23.093971;113.315634,23.093672;113.315634,23.093672;113.315642,23.093516;113.315547,23.093134;113.315547,23.093134;113.315595,23.092756;113.315595,23.092756;113.315634,23.092448;113.315634,23.092448;113.315686,23.091957;113.315686,23.091957;113.315742,23.091246;113.315742,23.091246;113.315777,23.090885;113.315777,23.090885;113.315803,23.090525;113.315803,23.090525;113.315833,23.090126;113.315833,23.090126;113.315868,23.089753;113.315868,23.089753;113.315898,23.089301;113.315898,23.089301;113.315946,23.088902;113.315946,23.088902;113.315964,23.088646;113.315964,23.088646;113.315994,23.088286;113.315994,23.088286;113.316068,23.087387;113.316068,23.087387;113.31612,23.08658;113.31612,23.08658;113.316146,23.085716;113.316146,23.085716;113.316124,23.08497;113.316124,23.08497;113.316081,23.084345&#39;,
      &#39;action&#39;: &#39;左转&#39;,
      &#39;assistant_action&#39;: [],
      &#39;walk_type&#39;: &#39;0&#39;},
     {&#39;instruction&#39;: &#39;向东步行42米右转&#39;,
      &#39;orientation&#39;: &#39;东&#39;,
      &#39;road&#39;: [],
      &#39;distance&#39;: &#39;42&#39;,
      &#39;duration&#39;: &#39;34&#39;,
      &#39;polyline&#39;: &#39;113.316076,23.08434;113.316389,23.084345;113.316389,23.084345;113.316497,23.084345&#39;,
      &#39;action&#39;: &#39;右转&#39;,
      &#39;assistant_action&#39;: [],
      &#39;walk_type&#39;: &#39;0&#39;},
     {&#39;instruction&#39;: &#39;向南步行94米左转&#39;,
      &#39;orientation&#39;: &#39;南&#39;,
      &#39;road&#39;: [],
      &#39;distance&#39;: &#39;94&#39;,
      &#39;duration&#39;: &#39;75&#39;,
      &#39;polyline&#39;: &#39;113.316497,23.08434;113.316502,23.083859;113.316563,23.083785;113.31678,23.083585&#39;,
      &#39;action&#39;: &#39;左转&#39;,
      &#39;assistant_action&#39;: [],
      &#39;walk_type&#39;: &#39;0&#39;},
     {&#39;instruction&#39;: &#39;向东步行63米到达目的地&#39;,
      &#39;orientation&#39;: &#39;东&#39;,
      &#39;road&#39;: [],
      &#39;distance&#39;: &#39;63&#39;,
      &#39;duration&#39;: &#39;50&#39;,
      &#39;polyline&#39;: &#39;113.31678,23.083581;113.317001,23.083668;113.317244,23.08372;113.317374,23.083711&#39;,
      &#39;action&#39;: [],
      &#39;assistant_action&#39;: &#39;到达目的地&#39;,
      &#39;walk_type&#39;: &#39;0&#39;}]}]}}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[345]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_步行路径规划</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大_广州塔</span><span class="p">[</span><span class="s2">&quot;route&quot;</span><span class="p">][</span><span class="s2">&quot;paths&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;steps&#39;</span><span class="p">])</span>
<span class="n">display</span><span class="p">(</span><span class="n">df_步行路径规划</span><span class="p">)</span>
<span class="n">df_步行路径规划</span><span class="p">[</span><span class="s2">&quot;instruction&quot;</span><span class="p">]</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>instruction</th>
      <th>orientation</th>
      <th>road</th>
      <th>distance</th>
      <th>duration</th>
      <th>polyline</th>
      <th>action</th>
      <th>assistant_action</th>
      <th>walk_type</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>沿园西路向南步行191米左转</td>
      <td>南</td>
      <td>园西路</td>
      <td>191</td>
      <td>153</td>
      <td>113.291745,23.09428;113.29168,23.094006;113.29...</td>
      <td>左转</td>
      <td>[]</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>沿新港西路向东步行2151米向右前方行走</td>
      <td>东</td>
      <td>新港西路</td>
      <td>2151</td>
      <td>1721</td>
      <td>113.291311,23.092587;113.291997,23.092413;113....</td>
      <td>向右前方行走</td>
      <td>[]</td>
      <td>0</td>
    </tr>
    <tr>
      <th>2</th>
      <td>步行10米左转</td>
      <td>[]</td>
      <td>[]</td>
      <td>10</td>
      <td>8</td>
      <td>113.31076,23.09559;113.310773,23.095495</td>
      <td>左转</td>
      <td>[]</td>
      <td>1</td>
    </tr>
    <tr>
      <th>3</th>
      <td>沿新港西路向东步行148米向右前方行走</td>
      <td>东</td>
      <td>新港西路</td>
      <td>148</td>
      <td>118</td>
      <td>113.310773,23.09549;113.310881,23.095503;113.3...</td>
      <td>向右前方行走</td>
      <td>[]</td>
      <td>0</td>
    </tr>
    <tr>
      <th>4</th>
      <td>沿新港西路向东步行113米</td>
      <td>东</td>
      <td>新港西路</td>
      <td>113</td>
      <td>90</td>
      <td>113.31224,23.095577;113.312452,23.09553;113.31...</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
    </tr>
    <tr>
      <th>5</th>
      <td>沿新港西路向东步行151米向左前方行走</td>
      <td>东</td>
      <td>新港西路</td>
      <td>151</td>
      <td>121</td>
      <td>113.313329,23.095543;113.313572,23.095516;113....</td>
      <td>向左前方行走</td>
      <td>[]</td>
      <td>0</td>
    </tr>
    <tr>
      <th>6</th>
      <td>沿新港中路向东步行102米右转</td>
      <td>东</td>
      <td>新港中路</td>
      <td>102</td>
      <td>82</td>
      <td>113.3148,23.095512;113.315122,23.095638;113.31...</td>
      <td>右转</td>
      <td>[]</td>
      <td>0</td>
    </tr>
    <tr>
      <th>7</th>
      <td>沿广州大道南向南步行1245米左转</td>
      <td>南</td>
      <td>广州大道南</td>
      <td>1245</td>
      <td>996</td>
      <td>113.315747,23.095538;113.315616,23.09543;113.3...</td>
      <td>左转</td>
      <td>[]</td>
      <td>0</td>
    </tr>
    <tr>
      <th>8</th>
      <td>向东步行42米右转</td>
      <td>东</td>
      <td>[]</td>
      <td>42</td>
      <td>34</td>
      <td>113.316076,23.08434;113.316389,23.084345;113.3...</td>
      <td>右转</td>
      <td>[]</td>
      <td>0</td>
    </tr>
    <tr>
      <th>9</th>
      <td>向南步行94米左转</td>
      <td>南</td>
      <td>[]</td>
      <td>94</td>
      <td>75</td>
      <td>113.316497,23.08434;113.316502,23.083859;113.3...</td>
      <td>左转</td>
      <td>[]</td>
      <td>0</td>
    </tr>
    <tr>
      <th>10</th>
      <td>向东步行63米到达目的地</td>
      <td>东</td>
      <td>[]</td>
      <td>63</td>
      <td>50</td>
      <td>113.31678,23.083581;113.317001,23.083668;113.3...</td>
      <td>[]</td>
      <td>到达目的地</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

<div class="output_area">

    <div class="prompt output_prompt">Out[345]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>0           沿园西路向南步行191米左转
1     沿新港西路向东步行2151米向右前方行走
2                  步行10米左转
3      沿新港西路向东步行148米向右前方行走
4            沿新港西路向东步行113米
5      沿新港西路向东步行151米向左前方行走
6          沿新港中路向东步行102米右转
7        沿广州大道南向南步行1245米左转
8                向东步行42米右转
9                向南步行94米左转
10            向东步行63米到达目的地
Name: instruction, dtype: object</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h4 id="&#23398;&#29983;&#32451;&#20064;&#65288;&#35831;&#25442;&#29992;&#20854;&#20182;&#22320;&#22336;&#28385;&#36275;&#20197;&#19979;&#35201;&#27714;&#65289;">&#23398;&#29983;&#32451;&#20064;&#65288;&#35831;&#25442;&#29992;&#20854;&#20182;&#22320;&#22336;&#28385;&#36275;&#20197;&#19979;&#35201;&#27714;&#65289;<a class="anchor-link" href="#&#23398;&#29983;&#32451;&#20064;&#65288;&#35831;&#25442;&#29992;&#20854;&#20182;&#22320;&#22336;&#28385;&#36275;&#20197;&#19979;&#35201;&#27714;&#65289;">&#182;</a></h4><ol>
<li>请更换地址，选择尽量含有walk_type参数，并查看高德是否返回正确</li>
<li>尝试不同的地址，检查返回的json</li>
</ol>
<p><img src="lianxi02.png" alt=""></p>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#20844;&#20132;&#36335;&#32447;&#35268;&#21010;&#65288;&#20195;&#30721;C&#65289;">&#20844;&#20132;&#36335;&#32447;&#35268;&#21010;&#65288;&#20195;&#30721;C&#65289;<a class="anchor-link" href="#&#20844;&#20132;&#36335;&#32447;&#35268;&#21010;&#65288;&#20195;&#30721;C&#65289;">&#182;</a></h3><ol>
<li>请同学们细读可使用的参数</li>
<li>尝试更改参数带到你想要的目标</li>
</ol>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[294]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># C-1</span>
<span class="k">def</span> <span class="nf">integrated</span><span class="p">(</span><span class="n">origin</span><span class="p">,</span><span class="n">destination</span><span class="p">,</span><span class="n">city</span><span class="p">,</span><span class="n">cityd</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s2">&quot;all&quot;</span><span class="p">,</span><span class="n">strategy</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">nightflag</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">date</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">time</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/direction/transit/integrated?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;origin&#39;</span><span class="p">:</span><span class="n">origin</span><span class="p">,</span>
        <span class="s1">&#39;destination&#39;</span><span class="p">:</span><span class="n">destination</span><span class="p">,</span>
        <span class="s1">&#39;city&#39;</span><span class="p">:</span><span class="n">city</span><span class="p">,</span>
        <span class="s1">&#39;cityd&#39;</span><span class="p">:</span><span class="n">cityd</span><span class="p">,</span>
        <span class="s1">&#39;extensions&#39;</span><span class="p">:</span><span class="n">extensions</span><span class="p">,</span>
        <span class="s1">&#39;strategy&#39;</span><span class="p">:</span><span class="n">strategy</span><span class="p">,</span>
        <span class="s1">&#39;nightflag&#39;</span><span class="p">:</span><span class="n">nightflag</span><span class="p">,</span>
        <span class="s1">&#39;date&#39;</span><span class="p">:</span><span class="n">date</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>

<span class="c1"># C-2 准备walking 参数 两个点 一个起点一个终点 </span>
<span class="n">中山大学</span> <span class="o">=</span> <span class="n">geocode</span><span class="p">(</span><span class="s1">&#39;广东省广州市中山大学南校区&#39;</span><span class="p">)</span>
<span class="n">中山大学_location</span> <span class="o">=</span> <span class="n">中山大学</span><span class="p">[</span><span class="s1">&#39;geocodes&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;location&#39;</span><span class="p">]</span>
<span class="n">天河城</span> <span class="o">=</span> <span class="n">geocode</span><span class="p">(</span><span class="s1">&#39;广东省广州市天河城&#39;</span><span class="p">)</span>
<span class="n">天河城_location</span> <span class="o">=</span> <span class="n">天河城</span><span class="p">[</span><span class="s1">&#39;geocodes&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;location&#39;</span><span class="p">]</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;(起点)中山大学_location:&quot;</span><span class="p">,</span><span class="n">中山大学_location</span><span class="p">,</span><span class="s2">&quot;(终点)天河城_location:&quot;</span><span class="p">,</span><span class="n">天河城_location</span><span class="p">)</span>

<span class="c1"># C-3 公交路径规划</span>
<span class="n">中大_天河城</span> <span class="o">=</span> <span class="n">integrated</span><span class="p">(</span><span class="n">中山大学_location</span><span class="p">,</span><span class="n">天河城_location</span><span class="p">,</span><span class="n">city</span><span class="o">=</span><span class="s1">&#39;广州&#39;</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s1">&#39;all&#39;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">中大_天河城</span><span class="p">)</span><span class="c1"># ！！先看看里面参数 然后按照参数打出内容</span>
<span class="n">df_bus</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大_天河城</span><span class="p">)</span>
<span class="n">df_bus</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>(起点)中山大学_location: 113.290219,23.128596 (终点)天河城_location: 113.361200,23.124680
{&#39;status&#39;: &#39;1&#39;, &#39;info&#39;: &#39;OK&#39;, &#39;infocode&#39;: &#39;10000&#39;, &#39;count&#39;: &#39;5&#39;, &#39;route&#39;: {&#39;origin&#39;: &#39;113.290219,23.128596&#39;, &#39;destination&#39;: &#39;113.361200,23.124680&#39;, &#39;distance&#39;: &#39;7012&#39;, &#39;taxi_cost&#39;: &#39;21.7312&#39;, &#39;transits&#39;: [{&#39;cost&#39;: &#39;2.0&#39;, &#39;duration&#39;: &#39;2693&#39;, &#39;nightflag&#39;: &#39;0&#39;, &#39;walking_distance&#39;: &#39;965&#39;, &#39;distance&#39;: &#39;8551&#39;, &#39;missed&#39;: &#39;0&#39;, &#39;segments&#39;: [{&#39;taxi&#39;: [], &#39;walking&#39;: {&#39;origin&#39;: &#39;113.290367,23.128555&#39;, &#39;destination&#39;: &#39;113.290771,23.124901&#39;, &#39;distance&#39;: &#39;665&#39;, &#39;duration&#39;: &#39;570&#39;, &#39;steps&#39;: [{&#39;instruction&#39;: &#39;沿岭南路步行152米左转&#39;, &#39;road&#39;: &#39;岭南路&#39;, &#39;distance&#39;: &#39;152&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290367,23.128555;113.290298,23.128311;113.290245,23.128094;113.290176,23.127834;113.290115,23.127705;113.290047,23.127596;113.289932,23.127483;113.289833,23.127426;113.289719,23.127392&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿岭南路步行75米往前走&#39;, &#39;road&#39;: &#39;岭南路&#39;, &#39;distance&#39;: &#39;75&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.289719,23.127388;113.289894,23.127035;113.289902,23.126957;113.289864,23.126745&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿杏林路步行155米左转&#39;, &#39;road&#39;: &#39;杏林路&#39;, &#39;distance&#39;: &#39;155&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.289864,23.126740;113.289742,23.126163;113.289703,23.126085;113.289635,23.126041;113.289558,23.126020;113.289474,23.126020;113.289253,23.126045;113.288940,23.126093&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行32米往前走&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;32&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.288940,23.126093;113.288879,23.125807&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿逸仙路步行16米左转&#39;, &#39;road&#39;: &#39;逸仙路&#39;, &#39;distance&#39;: &#39;16&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.288879,23.125803;113.288857,23.125769;113.288811,23.125668&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿中山二路步行167米右转&#39;, &#39;road&#39;: &#39;中山二路&#39;, &#39;distance&#39;: &#39;167&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.288803,23.125664;113.289406,23.125460;113.289635,23.125368;113.290359,23.125183&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行19米左转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;19&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290359,23.125174;113.290298,23.125017&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿中山二路步行49米到达中山医&#39;, &#39;road&#39;: &#39;中山二路&#39;, &#39;distance&#39;: &#39;49&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290298,23.125004;113.290352,23.125000;113.290771,23.124901&#39;, &#39;action&#39;: [], &#39;assistant_action&#39;: &#39;到达中山医&#39;}]}, &#39;bus&#39;: {&#39;buslines&#39;: [{&#39;departure_stop&#39;: {&#39;name&#39;: &#39;中山医&#39;, &#39;id&#39;: &#39;440100017371037&#39;, &#39;location&#39;: &#39;113.290741,23.124901&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;天府路&#39;, &#39;id&#39;: &#39;440100017371023&#39;, &#39;location&#39;: &#39;113.362358,23.125360&#39;}, &#39;name&#39;: &#39;B8路(宝岗大道总站--棠下小区总站)&#39;, &#39;id&#39;: &#39;440100017371&#39;, &#39;type&#39;: [], &#39;distance&#39;: &#39;7586&#39;, &#39;duration&#39;: &#39;1866&#39;, &#39;polyline&#39;: &#39;113.290741,23.124901;113.290932,23.124857;113.291016,23.124836;113.291519,23.124701;113.291885,23.124596;113.292168,23.124523;113.292702,23.124384;113.293228,23.124262;113.293297,23.124245;113.293930,23.124125;113.293938,23.124121;113.294212,23.124094;113.294777,23.124027;113.295021,23.123840;113.295113,23.123857;113.295532,23.123945;113.296631,23.124203;113.298393,23.124609;113.298965,23.124744;113.298958,23.124741;113.299690,23.124908;113.299934,23.124964;113.300186,23.125023;113.300308,23.125050;113.300552,23.125105;113.300728,23.125137;113.301308,23.125278;113.301498,23.125328;113.301636,23.125355;113.301834,23.125401;113.303017,23.125664;113.303299,23.125729;113.303902,23.125898;113.304398,23.126066;113.304596,23.126060;113.305008,23.126221;113.305466,23.126402;113.305832,23.126562;113.306145,23.126698;113.306252,23.126753;113.306519,23.126888;113.306763,23.127028;113.307343,23.127386;113.307877,23.127655;113.307991,23.127701;113.308594,23.127951;113.309082,23.128155;113.309639,23.128389;113.310265,23.128662;113.310463,23.128746;113.310776,23.128866;113.311180,23.128994;113.311317,23.129026;113.311455,23.129063;113.312157,23.129181;113.312637,23.129240;113.312988,23.129290;113.313171,23.129313;113.313622,23.129362;113.313789,23.129379;113.314018,23.129379;113.314415,23.129345;113.314705,23.129297;113.314850,23.129250;113.314941,23.129158;113.315079,23.129084;113.315147,23.129066;113.315186,23.129057;113.315437,23.129026;113.315582,23.129040;113.315659,23.129070;113.316429,23.128702;113.316895,23.128515;113.317520,23.128273;113.318008,23.128069;113.318634,23.127773;113.318741,23.127728;113.319016,23.127630;113.319237,23.127583;113.319611,23.127541;113.319817,23.127535;113.320396,23.127501;113.320389,23.127501;113.321037,23.127460;113.321503,23.127468;113.321609,23.127478;113.321739,23.127522;113.323975,23.127369;113.324806,23.127323;113.324913,23.127266;113.325500,23.127239;113.326454,23.127178;113.327408,23.127117;113.327682,23.127090;113.327965,23.127071;113.328224,23.127048;113.328590,23.127022;113.329628,23.126953;113.329674,23.126949;113.329765,23.126944;113.330971,23.126875;113.332169,23.126799;113.332664,23.126762;113.333176,23.126722;113.333786,23.126684;113.333946,23.126675;113.334106,23.126671;113.334541,23.126648;113.334961,23.126627;113.334984,23.126627;113.335770,23.126602;113.336403,23.126572;113.336655,23.126562;113.336777,23.126602;113.337181,23.126566;113.337830,23.126516;113.337929,23.126507;113.338425,23.126467;113.339432,23.126398;113.339577,23.126385;113.340179,23.126347;113.340423,23.126262;113.341329,23.126163;113.342424,23.126094;113.344333,23.125981;113.345969,23.125843;113.346822,23.125764;113.347244,23.125731;113.347427,23.125769;113.347710,23.125738;113.347992,23.125694;113.348137,23.125673;113.348648,23.125608;113.348923,23.125565;113.350349,23.125338;113.351479,23.125170;113.351540,23.125050;113.351654,23.124945;113.351746,23.124908;113.352112,23.124844;113.352104,23.124844;113.352234,23.124823;113.352356,23.124823;113.352661,23.125004;113.353271,23.124891;113.353760,23.124809;113.355286,23.124523;113.355789,23.124432;113.356339,23.124336;113.356659,23.124231;113.356934,23.124193;113.357269,23.124136;113.357536,23.124084;113.357857,23.124022;113.358086,23.123980;113.358429,23.123920;113.358482,23.123907;113.358894,23.123833;113.359085,23.123793;113.359261,23.123716;113.359505,23.123663;113.360619,23.123451;113.361023,23.123360;113.361298,23.123306;113.361473,23.123268;113.362045,23.123116;113.362175,23.123447;113.362274,23.124586;113.362358,23.125360&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: [], &#39;end_time&#39;: [], &#39;via_num&#39;: &#39;10&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;东山口&#39;, &#39;id&#39;: &#39;440100017371038&#39;, &#39;location&#39;: &#39;113.293930,23.124125&#39;}, {&#39;name&#39;: &#39;农林东&#39;, &#39;id&#39;: &#39;440100017371014&#39;, &#39;location&#39;: &#39;113.298965,23.124744&#39;}, {&#39;name&#39;: &#39;梅花村&#39;, &#39;id&#39;: &#39;440100017371039&#39;, &#39;location&#39;: &#39;113.306252,23.126753&#39;}, {&#39;name&#39;: &#39;杨箕村&#39;, &#39;id&#39;: &#39;440100017371040&#39;, &#39;location&#39;: &#39;113.311317,23.129026&#39;}, {&#39;name&#39;: &#39;天河&#39;, &#39;id&#39;: &#39;440100017371041&#39;, &#39;location&#39;: &#39;113.320396,23.127501&#39;}, {&#39;name&#39;: &#39;冼村&#39;, &#39;id&#39;: &#39;440100017371042&#39;, &#39;location&#39;: &#39;113.329674,23.126949&#39;}, {&#39;name&#39;: &#39;石牌村&#39;, &#39;id&#39;: &#39;440100017371019&#39;, &#39;location&#39;: &#39;113.339577,23.126385&#39;}, {&#39;name&#39;: &#39;国防大厦&#39;, &#39;id&#39;: &#39;440100017371020&#39;, &#39;location&#39;: &#39;113.347992,23.125694&#39;}, {&#39;name&#39;: &#39;华侨医院(潭村)&#39;, &#39;id&#39;: &#39;440100017371043&#39;, &#39;location&#39;: &#39;113.352112,23.124844&#39;}, {&#39;name&#39;: &#39;员村山顶&#39;, &#39;id&#39;: &#39;440100017371022&#39;, &#39;location&#39;: &#39;113.357857,23.124022&#39;}]}]}, &#39;entrance&#39;: [], &#39;exit&#39;: [], &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}, {&#39;taxi&#39;: [], &#39;walking&#39;: {&#39;origin&#39;: &#39;113.362358,23.125422&#39;, &#39;destination&#39;: &#39;113.361488,23.124657&#39;, &#39;distance&#39;: &#39;300&#39;, &#39;duration&#39;: &#39;257&#39;, &#39;steps&#39;: [{&#39;instruction&#39;: &#39;沿天府路步行92米右转&#39;, &#39;road&#39;: &#39;天府路&#39;, &#39;distance&#39;: &#39;92&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362358,23.125422;113.362289,23.124701;113.362274,23.124592&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行24米左转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;24&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362267,23.124588;113.362213,23.124601;113.362129,23.124605;113.362022,23.124609&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行112米右转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;112&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362015,23.124609;113.361977,23.124132;113.361809,23.124033;113.361443,23.124006&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行13米往前走&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;13&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361443,23.124002;113.361450,23.124128&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行59米&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;59&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361450,23.124128;113.361488,23.124657&#39;, &#39;action&#39;: [], &#39;assistant_action&#39;: []}]}, &#39;bus&#39;: {&#39;buslines&#39;: []}, &#39;entrance&#39;: [], &#39;exit&#39;: [], &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}]}, {&#39;cost&#39;: &#39;4.0&#39;, &#39;duration&#39;: &#39;2443&#39;, &#39;nightflag&#39;: &#39;0&#39;, &#39;walking_distance&#39;: &#39;1690&#39;, &#39;distance&#39;: &#39;10345&#39;, &#39;missed&#39;: &#39;0&#39;, &#39;segments&#39;: [{&#39;taxi&#39;: [], &#39;walking&#39;: {&#39;origin&#39;: &#39;113.290367,23.128555&#39;, &#39;destination&#39;: &#39;113.296722,23.134483&#39;, &#39;distance&#39;: &#39;1274&#39;, &#39;duration&#39;: &#39;1092&#39;, &#39;steps&#39;: [{&#39;instruction&#39;: &#39;沿岭南路步行139米右转&#39;, &#39;road&#39;: &#39;岭南路&#39;, &#39;distance&#39;: &#39;139&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290367,23.128555;113.290443,23.128807;113.290588,23.129210;113.290710,23.129545;113.290810,23.129753&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行108米左转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;108&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290810,23.129753;113.290848,23.129696;113.290916,23.129669;113.291260,23.129675;113.291672,23.129683;113.291817,23.129744&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿执信南路步行56米向右前方行走&#39;, &#39;road&#39;: &#39;执信南路&#39;, &#39;distance&#39;: &#39;56&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.291817,23.129744;113.291779,23.130251&#39;, &#39;action&#39;: &#39;向右前方行走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行157米右转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;157&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.291771,23.130251;113.291855,23.130260;113.291824,23.130686;113.291862,23.130724;113.291916,23.130808;113.291924,23.130880;113.291924,23.130938;113.291893,23.131037;113.291786,23.131124;113.291748,23.131458;113.291672,23.131458&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿执信南路步行91米右转&#39;, &#39;road&#39;: &#39;执信南路&#39;, &#39;distance&#39;: &#39;91&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.291672,23.131454;113.291656,23.131767;113.291634,23.131840;113.291588,23.132278&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿先烈南路步行311米向右前方行走&#39;, &#39;road&#39;: &#39;先烈南路&#39;, &#39;distance&#39;: &#39;311&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.291580,23.132278;113.291725,23.132318;113.291756,23.132339;113.291893,23.132483;113.292076,23.132717;113.292412,23.133125;113.292671,23.133442;113.293121,23.134020;113.293427,23.134384;113.293503,23.134445&#39;, &#39;action&#39;: &#39;向右前方行走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行89米右转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;89&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.293503,23.134445;113.293808,23.134531;113.293900,23.134596;113.293968,23.134678;113.293999,23.134748;113.294022,23.134983&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿环市东路步行234米左转&#39;, &#39;road&#39;: &#39;环市东路&#39;, &#39;distance&#39;: &#39;234&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.294022,23.134983;113.294746,23.134871;113.295769,23.134701;113.296272,23.134623&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行89米到达区庄&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;89&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.296272,23.134619;113.296272,23.134752;113.296318,23.134752;113.296318,23.134487;113.296722,23.134483;113.296722,23.134483&#39;, &#39;action&#39;: [], &#39;assistant_action&#39;: &#39;到达区庄&#39;}]}, &#39;bus&#39;: {&#39;buslines&#39;: [{&#39;departure_stop&#39;: {&#39;name&#39;: &#39;区庄&#39;, &#39;id&#39;: &#39;440100023037010&#39;, &#39;location&#39;: &#39;113.296725,23.134483&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;员村&#39;, &#39;id&#39;: &#39;440100023037017&#39;, &#39;location&#39;: &#39;113.363663,23.115768&#39;}, &#39;name&#39;: &#39;地铁5号线(滘口--文冲)&#39;, &#39;id&#39;: &#39;440100023037&#39;, &#39;type&#39;: &#39;地铁线路&#39;, &#39;distance&#39;: &#39;7660&#39;, &#39;duration&#39;: &#39;876&#39;, &#39;polyline&#39;: &#39;113.296725,23.134483;113.297627,23.134484;113.302571,23.134479;113.305700,23.134501;113.306515,23.134497;113.306965,23.134503;113.307291,23.134503;113.307619,23.134503;113.307976,23.134487;113.308276,23.134453;113.308555,23.134409;113.308813,23.134350;113.309011,23.134271;113.309151,23.134182;113.309274,23.134049;113.309349,23.133876;113.309376,23.133689;113.309392,23.133472;113.309376,23.133304;113.309349,23.133126;113.309312,23.132949;113.309263,23.132776;113.309199,23.132599;113.309076,23.132367;113.307863,23.130561;113.307590,23.130162;113.307488,23.129944;113.307407,23.129688;113.307355,23.129463;113.307329,23.129277;113.307303,23.129049;113.307303,23.128857;113.307275,23.128545;113.307255,23.128363;113.307249,23.128235;113.307272,23.128111;113.307692,23.127284;113.308154,23.126367;113.309062,23.124663;113.309984,23.123045;113.311170,23.120914;113.311379,23.120598;113.311540,23.120396;113.311717,23.120233;113.311915,23.120104;113.312135,23.120016;113.312382,23.119942;113.312672,23.119887;113.313058,23.119853;113.313656,23.119834;113.314249,23.119843;113.314847,23.119853;113.316770,23.119715;113.320016,23.119292;113.321206,23.119293;113.322586,23.119290;113.324445,23.119121;113.326668,23.118952;113.329169,23.118750;113.331498,23.118582;113.332105,23.118539;113.332697,23.118502;113.338429,23.118002;113.341315,23.117680;113.344663,23.117464;113.345949,23.117366;113.347295,23.117264;113.353770,23.116557;113.362917,23.115772;113.363663,23.115768&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: &#39;0615&#39;, &#39;end_time&#39;: &#39;2315&#39;, &#39;via_num&#39;: &#39;6&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;动物园&#39;, &#39;id&#39;: &#39;440100023037011&#39;, &#39;location&#39;: &#39;113.307291,23.134503&#39;}, {&#39;name&#39;: &#39;杨箕&#39;, &#39;id&#39;: &#39;440100023037012&#39;, &#39;location&#39;: &#39;113.307692,23.127284&#39;}, {&#39;name&#39;: &#39;五羊邨&#39;, &#39;id&#39;: &#39;440100023037013&#39;, &#39;location&#39;: &#39;113.314249,23.119843&#39;}, {&#39;name&#39;: &#39;珠江新城&#39;, &#39;id&#39;: &#39;440100023037014&#39;, &#39;location&#39;: &#39;113.321206,23.119293&#39;}, {&#39;name&#39;: &#39;猎德&#39;, &#39;id&#39;: &#39;440100023037015&#39;, &#39;location&#39;: &#39;113.332105,23.118539&#39;}, {&#39;name&#39;: &#39;潭村&#39;, &#39;id&#39;: &#39;440100023037016&#39;, &#39;location&#39;: &#39;113.345949,23.117366&#39;}]}]}, &#39;entrance&#39;: {&#39;name&#39;: &#39;E口&#39;, &#39;location&#39;: &#39;113.296318,23.134756&#39;}, &#39;exit&#39;: [], &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}, {&#39;taxi&#39;: [], &#39;walking&#39;: [], &#39;bus&#39;: {&#39;buslines&#39;: [{&#39;departure_stop&#39;: {&#39;name&#39;: &#39;员村&#39;, &#39;id&#39;: &#39;900000046004022&#39;, &#39;location&#39;: &#39;113.363663,23.115768&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;天河公园&#39;, &#39;id&#39;: &#39;900000046004023&#39;, &#39;location&#39;: &#39;113.362879,23.125317&#39;}, &#39;name&#39;: &#39;地铁21号线(员村--增城广场)&#39;, &#39;id&#39;: &#39;900000046004&#39;, &#39;type&#39;: &#39;地铁线路&#39;, &#39;distance&#39;: &#39;995&#39;, &#39;duration&#39;: &#39;119&#39;, &#39;polyline&#39;: &#39;113.363663,23.115768;113.363667,23.116199;113.363613,23.117254;113.363592,23.117459;113.362762,23.120408;113.362641,23.121340;113.362649,23.121803;113.362686,23.122398;113.362830,23.124197;113.362879,23.125317&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: &#39;0600&#39;, &#39;end_time&#39;: &#39;2250&#39;, &#39;via_num&#39;: &#39;0&#39;, &#39;via_stops&#39;: []}]}, &#39;entrance&#39;: [], &#39;exit&#39;: {&#39;name&#39;: &#39;F口&#39;, &#39;location&#39;: &#39;113.362473,23.124685&#39;}, &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}, {&#39;taxi&#39;: [], &#39;walking&#39;: {&#39;origin&#39;: &#39;113.362877,23.125317&#39;, &#39;destination&#39;: &#39;113.361488,23.124657&#39;, &#39;distance&#39;: &#39;415&#39;, &#39;duration&#39;: &#39;355&#39;, &#39;steps&#39;: [{&#39;instruction&#39;: &#39;步行195米左转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;195&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362877,23.125317;113.362846,23.124371;113.362457,23.124384;113.362473,23.124683;113.362289,23.124697&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿天府路步行12米右转&#39;, &#39;road&#39;: &#39;天府路&#39;, &#39;distance&#39;: &#39;12&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362289,23.124697;113.362274,23.124592&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行24米左转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;24&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362267,23.124588;113.362213,23.124601;113.362129,23.124605;113.362022,23.124609&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行112米右转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;112&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362015,23.124609;113.361977,23.124132;113.361809,23.124033;113.361443,23.124006&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行13米往前走&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;13&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361443,23.124002;113.361450,23.124128&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行59米&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;59&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361450,23.124128;113.361488,23.124657&#39;, &#39;action&#39;: [], &#39;assistant_action&#39;: []}]}, &#39;bus&#39;: {&#39;buslines&#39;: []}, &#39;entrance&#39;: [], &#39;exit&#39;: [], &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}]}, {&#39;cost&#39;: &#39;2.0&#39;, &#39;duration&#39;: &#39;2646&#39;, &#39;nightflag&#39;: &#39;0&#39;, &#39;walking_distance&#39;: &#39;1060&#39;, &#39;distance&#39;: &#39;7996&#39;, &#39;missed&#39;: &#39;0&#39;, &#39;segments&#39;: [{&#39;taxi&#39;: [], &#39;walking&#39;: {&#39;origin&#39;: &#39;113.290367,23.128555&#39;, &#39;destination&#39;: &#39;113.293068,23.130842&#39;, &#39;distance&#39;: &#39;495&#39;, &#39;duration&#39;: &#39;424&#39;, &#39;steps&#39;: [{&#39;instruction&#39;: &#39;沿岭南路步行139米右转&#39;, &#39;road&#39;: &#39;岭南路&#39;, &#39;distance&#39;: &#39;139&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290367,23.128555;113.290443,23.128807;113.290588,23.129210;113.290710,23.129545;113.290810,23.129753&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行108米左转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;108&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290810,23.129753;113.290848,23.129696;113.290916,23.129669;113.291260,23.129675;113.291672,23.129683;113.291817,23.129744&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿执信南路步行110米右转&#39;, &#39;road&#39;: &#39;执信南路&#39;, &#39;distance&#39;: &#39;110&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.291817,23.129744;113.291779,23.130251;113.291756,23.130438;113.291740,23.130642;113.291733,23.130754&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿东风东路步行138米到达执信路&#39;, &#39;road&#39;: &#39;东风东路&#39;, &#39;distance&#39;: &#39;138&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.291733,23.130754;113.291924,23.130764;113.292053,23.130833;113.292274,23.130833;113.292702,23.130838;113.293068,23.130842&#39;, &#39;action&#39;: [], &#39;assistant_action&#39;: &#39;到达执信路&#39;}]}, &#39;bus&#39;: {&#39;buslines&#39;: [{&#39;departure_stop&#39;: {&#39;name&#39;: &#39;执信路&#39;, &#39;id&#39;: &#39;440100016471013&#39;, &#39;location&#39;: &#39;113.293060,23.130842&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;员村山顶&#39;, &#39;id&#39;: &#39;440100016471022&#39;, &#39;location&#39;: &#39;113.358780,23.123848&#39;}, &#39;name&#39;: &#39;284路(广园新村总站--员村总站)&#39;, &#39;id&#39;: &#39;440100016471&#39;, &#39;type&#39;: &#39;普通公交线路&#39;, &#39;distance&#39;: &#39;6936&#39;, &#39;duration&#39;: &#39;1738&#39;, &#39;polyline&#39;: &#39;113.293060,23.130842;113.293152,23.130842;113.293709,23.130842;113.294434,23.130846;113.295197,23.130875;113.295341,23.130911;113.295502,23.130911;113.296379,23.130928;113.297188,23.130938;113.297554,23.130968;113.297821,23.130993;113.298210,23.131029;113.299751,23.131302;113.300652,23.131453;113.301003,23.131493;113.301712,23.131626;113.302734,23.131758;113.303108,23.131767;113.303474,23.131762;113.303474,23.131758;113.303528,23.131758;113.304001,23.131771;113.304451,23.131775;113.305061,23.131788;113.306145,23.131800;113.306816,23.131800;113.307549,23.131800;113.307770,23.131817;113.308861,23.131823;113.309135,23.131823;113.309509,23.131794;113.309868,23.131741;113.310287,23.131659;113.310570,23.131575;113.310783,23.131516;113.310783,23.131519;113.310867,23.131493;113.310974,23.131411;113.311447,23.131207;113.312126,23.130911;113.312202,23.130838;113.312408,23.130733;113.312805,23.130564;113.312988,23.130478;113.313141,23.130404;113.313370,23.130295;113.313446,23.130287;113.313568,23.130241;113.314384,23.129862;113.314667,23.129730;113.314835,23.129641;113.314888,23.129604;113.314919,23.129581;113.314957,23.129539;113.314957,23.129505;113.314972,23.129423;113.315010,23.129335;113.315102,23.129253;113.315163,23.129227;113.315193,23.129223;113.315224,23.129210;113.315262,23.129208;113.315430,23.129202;113.315536,23.129223;113.315628,23.129276;113.315895,23.129154;113.316315,23.128958;113.316856,23.128729;113.317856,23.128269;113.318527,23.127869;113.318634,23.127773;113.318741,23.127728;113.319016,23.127630;113.319237,23.127583;113.319405,23.127560;113.319611,23.127541;113.319817,23.127535;113.321037,23.127460;113.321503,23.127468;113.321609,23.127478;113.321739,23.127522;113.323975,23.127369;113.324806,23.127323;113.324913,23.127266;113.325500,23.127239;113.326454,23.127178;113.327408,23.127117;113.327682,23.127090;113.327965,23.127071;113.328224,23.127048;113.328590,23.127022;113.329628,23.126953;113.329765,23.126944;113.330666,23.126894;113.330971,23.126875;113.332169,23.126799;113.332664,23.126762;113.333176,23.126722;113.333786,23.126684;113.333946,23.126675;113.334106,23.126671;113.334541,23.126648;113.334961,23.126627;113.334984,23.126627;113.335770,23.126602;113.336403,23.126572;113.336655,23.126562;113.336777,23.126602;113.337181,23.126566;113.337830,23.126516;113.337929,23.126507;113.338425,23.126467;113.339432,23.126398;113.340179,23.126347;113.340408,23.126253;113.340469,23.126249;113.340797,23.126221;113.341324,23.126171;113.341728,23.126139;113.341919,23.126125;113.342270,23.126102;113.342697,23.126072;113.343109,23.126047;113.343246,23.126038;113.343369,23.126028;113.343491,23.126024;113.343704,23.126011;113.343918,23.125994;113.344185,23.125978;113.344452,23.125959;113.344879,23.125929;113.345726,23.125860;113.345970,23.125834;113.346107,23.125816;113.346306,23.125793;113.347244,23.125738;113.347427,23.125769;113.347710,23.125738;113.348137,23.125673;113.348648,23.125608;113.348923,23.125565;113.350349,23.125338;113.351479,23.125170;113.351540,23.125050;113.351654,23.124945;113.351746,23.124908;113.352188,23.124830;113.352234,23.124823;113.352272,23.124796;113.352341,23.124741;113.352661,23.125004;113.353271,23.124891;113.353760,23.124809;113.355286,23.124523;113.355789,23.124432;113.356339,23.124336;113.356659,23.124231;113.356934,23.124193;113.357269,23.124136;113.358086,23.123980;113.358261,23.123949;113.358429,23.123920;113.358482,23.123907;113.358780,23.123848&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: &#39;0600&#39;, &#39;end_time&#39;: &#39;2220&#39;, &#39;via_num&#39;: &#39;8&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;东风东路站&#39;, &#39;id&#39;: &#39;440100016471014&#39;, &#39;location&#39;: &#39;113.303474,23.131762&#39;}, {&#39;name&#39;: &#39;东峻广场&#39;, &#39;id&#39;: &#39;440100016471015&#39;, &#39;location&#39;: &#39;113.306816,23.131800&#39;}, {&#39;name&#39;: &#39;锦城花园&#39;, &#39;id&#39;: &#39;440100016471029&#39;, &#39;location&#39;: &#39;113.310783,23.131516&#39;}, {&#39;name&#39;: &#39;天河&#39;, &#39;id&#39;: &#39;440100016471017&#39;, &#39;location&#39;: &#39;113.319405,23.127560&#39;}, {&#39;name&#39;: &#39;冼村&#39;, &#39;id&#39;: &#39;440100016471018&#39;, &#39;location&#39;: &#39;113.330666,23.126894&#39;}, {&#39;name&#39;: &#39;石牌村&#39;, &#39;id&#39;: &#39;440100016471019&#39;, &#39;location&#39;: &#39;113.340469,23.126249&#39;}, {&#39;name&#39;: &#39;国防大厦&#39;, &#39;id&#39;: &#39;440100016471020&#39;, &#39;location&#39;: &#39;113.344879,23.125929&#39;}, {&#39;name&#39;: &#39;华侨医院(潭村)&#39;, &#39;id&#39;: &#39;440100016471033&#39;, &#39;location&#39;: &#39;113.352188,23.124830&#39;}]}, {&#39;departure_stop&#39;: {&#39;name&#39;: &#39;执信路&#39;, &#39;id&#39;: &#39;440100016786015&#39;, &#39;location&#39;: &#39;113.293091,23.130842&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;员村山顶&#39;, &#39;id&#39;: &#39;440100016786025&#39;, &#39;location&#39;: &#39;113.357979,23.124002&#39;}, &#39;name&#39;: &#39;518路(站前路总站--棠下小区总站)&#39;, &#39;id&#39;: &#39;440100016786&#39;, &#39;type&#39;: &#39;普通公交线路&#39;, &#39;distance&#39;: &#39;7427&#39;, &#39;duration&#39;: &#39;1907&#39;, &#39;polyline&#39;: &#39;113.293091,23.130842;113.293152,23.130842;113.293709,23.130842;113.294434,23.130846;113.295197,23.130875;113.295341,23.130911;113.295502,23.130911;113.296379,23.130928;113.297188,23.130938;113.297554,23.130968;113.297821,23.130993;113.298210,23.131029;113.299751,23.131302;113.300652,23.131453;113.301003,23.131493;113.301712,23.131626;113.302734,23.131758;113.303513,23.131758;113.303528,23.131758;113.304001,23.131771;113.304451,23.131775;113.305061,23.131788;113.306145,23.131800;113.306862,23.131800;113.307549,23.131800;113.307770,23.131817;113.308861,23.131823;113.309135,23.131823;113.309509,23.131794;113.309868,23.131741;113.310287,23.131659;113.310570,23.131575;113.310692,23.131544;113.310692,23.131540;113.310867,23.131493;113.311005,23.131475;113.311371,23.131325;113.312393,23.130865;113.312912,23.130678;113.312988,23.130638;113.315186,23.129608;113.317368,23.128565;113.317886,23.128321;113.318634,23.127920;113.318855,23.127817;113.319099,23.127729;113.319366,23.127661;113.319817,23.127535;113.321037,23.127460;113.321175,23.127199;113.321175,23.126640;113.321175,23.126493;113.321175,23.126249;113.321175,23.126221;113.321175,23.126129;113.321175,23.125719;113.321175,23.125664;113.321190,23.124878;113.321198,23.124445;113.321198,23.124275;113.321210,23.124040;113.321205,23.124031;113.321121,23.124012;113.321022,23.123938;113.320984,23.123884;113.320961,23.123789;113.320969,23.123642;113.321014,23.123550;113.321037,23.123524;113.321167,23.123461;113.321342,23.123461;113.321465,23.123510;113.321526,23.123569;113.321571,23.123724;113.321564,23.123819;113.321541,23.123898;113.321503,23.123945;113.321449,23.123999;113.321381,23.124027;113.321365,23.124271;113.321365,23.124445;113.321365,23.124557;113.321365,23.124857;113.321365,23.125422;113.321365,23.125664;113.321365,23.126221;113.321365,23.126249;113.321365,23.126507;113.321396,23.127205;113.321518,23.127344;113.321739,23.127522;113.323975,23.127369;113.324806,23.127323;113.324913,23.127266;113.325500,23.127239;113.326454,23.127178;113.327408,23.127117;113.327682,23.127090;113.327965,23.127071;113.328224,23.127048;113.328590,23.127022;113.329628,23.126953;113.329765,23.126944;113.329811,23.126940;113.330971,23.126875;113.332169,23.126799;113.332664,23.126762;113.333176,23.126722;113.333786,23.126684;113.333946,23.126675;113.334106,23.126671;113.334541,23.126648;113.334961,23.126627;113.334984,23.126627;113.335770,23.126602;113.336403,23.126572;113.336655,23.126562;113.336777,23.126602;113.337181,23.126566;113.337830,23.126516;113.337929,23.126507;113.338425,23.126467;113.339432,23.126398;113.339523,23.126389;113.340179,23.126347;113.340408,23.126253;113.340797,23.126221;113.341324,23.126171;113.341728,23.126139;113.341919,23.126125;113.342270,23.126102;113.342697,23.126072;113.343109,23.126047;113.343246,23.126038;113.343369,23.126028;113.343491,23.126024;113.343704,23.126011;113.343918,23.125994;113.344185,23.125978;113.344452,23.125959;113.344872,23.125929;113.345726,23.125860;113.345970,23.125834;113.346107,23.125816;113.346306,23.125793;113.347244,23.125738;113.347427,23.125769;113.347710,23.125738;113.348137,23.125673;113.348648,23.125608;113.348923,23.125565;113.350349,23.125338;113.351479,23.125170;113.351540,23.125050;113.351654,23.124945;113.351746,23.124908;113.352234,23.124823;113.352272,23.124796;113.352341,23.124741;113.352661,23.125004;113.353271,23.124891;113.353760,23.124809;113.355286,23.124523;113.355789,23.124432;113.356339,23.124336;113.356659,23.124231;113.356934,23.124193;113.357269,23.124136;113.357979,23.124002&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: &#39;0615&#39;, &#39;end_time&#39;: &#39;2230&#39;, &#39;via_num&#39;: &#39;8&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;东风东路站&#39;, &#39;id&#39;: &#39;440100016786016&#39;, &#39;location&#39;: &#39;113.303513,23.131758&#39;}, {&#39;name&#39;: &#39;东峻广场&#39;, &#39;id&#39;: &#39;440100016786017&#39;, &#39;location&#39;: &#39;113.306862,23.131800&#39;}, {&#39;name&#39;: &#39;锦城花园&#39;, &#39;id&#39;: &#39;440100016786037&#39;, &#39;location&#39;: &#39;113.310692,23.131544&#39;}, {&#39;name&#39;: &#39;华夏路北&#39;, &#39;id&#39;: &#39;440100016786019&#39;, &#39;location&#39;: &#39;113.321175,23.126129&#39;}, {&#39;name&#39;: &#39;冼村&#39;, &#39;id&#39;: &#39;440100016786021&#39;, &#39;location&#39;: &#39;113.329811,23.126940&#39;}, {&#39;name&#39;: &#39;石牌村&#39;, &#39;id&#39;: &#39;440100016786022&#39;, &#39;location&#39;: &#39;113.339523,23.126389&#39;}, {&#39;name&#39;: &#39;国防大厦&#39;, &#39;id&#39;: &#39;440100016786023&#39;, &#39;location&#39;: &#39;113.344872,23.125929&#39;}, {&#39;name&#39;: &#39;华侨医院(潭村)&#39;, &#39;id&#39;: &#39;440100016786038&#39;, &#39;location&#39;: &#39;113.352234,23.124823&#39;}]}]}, &#39;entrance&#39;: [], &#39;exit&#39;: [], &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}, {&#39;taxi&#39;: [], &#39;walking&#39;: {&#39;origin&#39;: &#39;113.358719,23.123863&#39;, &#39;destination&#39;: &#39;113.361488,23.124657&#39;, &#39;distance&#39;: &#39;565&#39;, &#39;duration&#39;: &#39;484&#39;, &#39;steps&#39;: [{&#39;instruction&#39;: &#39;沿黄埔大道中步行42米靠右&#39;, &#39;road&#39;: &#39;黄埔大道中&#39;, &#39;distance&#39;: &#39;42&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.358719,23.123863;113.358894,23.123837;113.359131,23.123793&#39;, &#39;action&#39;: &#39;靠右&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿黄埔大道中步行303米左转&#39;, &#39;road&#39;: &#39;黄埔大道中&#39;, &#39;distance&#39;: &#39;303&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.359131,23.123789;113.359268,23.123720;113.359497,23.123667;113.360611,23.123455;113.360641,23.123451;113.361023,23.123363;113.361397,23.123289;113.361473,23.123272;113.361694,23.123211;113.362045,23.123121&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿天府路步行39米左转&#39;, &#39;road&#39;: &#39;天府路&#39;, &#39;distance&#39;: &#39;39&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362045,23.123116;113.362083,23.123472&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿黄埔大道中步行68米右转&#39;, &#39;road&#39;: &#39;黄埔大道中&#39;, &#39;distance&#39;: &#39;68&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362083,23.123472;113.361572,23.123598;113.361427,23.123625&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行41米往前走&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;41&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361427,23.123625;113.361443,23.123772;113.361443,23.124002&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行13米往前走&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;13&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361443,23.124002;113.361450,23.124128&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行59米&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;59&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361450,23.124128;113.361488,23.124657&#39;, &#39;action&#39;: [], &#39;assistant_action&#39;: []}]}, &#39;bus&#39;: {&#39;buslines&#39;: []}, &#39;entrance&#39;: [], &#39;exit&#39;: [], &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}]}, {&#39;cost&#39;: &#39;2.0&#39;, &#39;duration&#39;: &#39;2862&#39;, &#39;nightflag&#39;: &#39;0&#39;, &#39;walking_distance&#39;: &#39;979&#39;, &#39;distance&#39;: &#39;8224&#39;, &#39;missed&#39;: &#39;0&#39;, &#39;segments&#39;: [{&#39;taxi&#39;: [], &#39;walking&#39;: {&#39;origin&#39;: &#39;113.290367,23.128555&#39;, &#39;destination&#39;: &#39;113.293068,23.130842&#39;, &#39;distance&#39;: &#39;495&#39;, &#39;duration&#39;: &#39;424&#39;, &#39;steps&#39;: [{&#39;instruction&#39;: &#39;沿岭南路步行139米右转&#39;, &#39;road&#39;: &#39;岭南路&#39;, &#39;distance&#39;: &#39;139&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290367,23.128555;113.290443,23.128807;113.290588,23.129210;113.290710,23.129545;113.290810,23.129753&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行108米左转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;108&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290810,23.129753;113.290848,23.129696;113.290916,23.129669;113.291260,23.129675;113.291672,23.129683;113.291817,23.129744&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿执信南路步行110米右转&#39;, &#39;road&#39;: &#39;执信南路&#39;, &#39;distance&#39;: &#39;110&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.291817,23.129744;113.291779,23.130251;113.291756,23.130438;113.291740,23.130642;113.291733,23.130754&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿东风东路步行138米到达执信路&#39;, &#39;road&#39;: &#39;东风东路&#39;, &#39;distance&#39;: &#39;138&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.291733,23.130754;113.291924,23.130764;113.292053,23.130833;113.292274,23.130833;113.292702,23.130838;113.293068,23.130842&#39;, &#39;action&#39;: [], &#39;assistant_action&#39;: &#39;到达执信路&#39;}]}, &#39;bus&#39;: {&#39;buslines&#39;: [{&#39;departure_stop&#39;: {&#39;name&#39;: &#39;执信路&#39;, &#39;id&#39;: &#39;440100016432015&#39;, &#39;location&#39;: &#39;113.293068,23.130842&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;员村&#39;, &#39;id&#39;: &#39;440100016432047&#39;, &#39;location&#39;: &#39;113.364624,23.122396&#39;}, &#39;name&#39;: &#39;261路(河沙总站--鱼珠总站)&#39;, &#39;id&#39;: &#39;440100016432&#39;, &#39;type&#39;: &#39;普通公交线路&#39;, &#39;distance&#39;: &#39;7245&#39;, &#39;duration&#39;: &#39;2023&#39;, &#39;polyline&#39;: &#39;113.293068,23.130842;113.293152,23.130842;113.293709,23.130842;113.294434,23.130846;113.295197,23.130875;113.295334,23.130838;113.296204,23.130846;113.296661,23.130859;113.296936,23.130865;113.297188,23.130875;113.297241,23.130880;113.297920,23.130928;113.297997,23.130938;113.298607,23.131002;113.298775,23.131039;113.298904,23.131052;113.299393,23.131138;113.299896,23.131229;113.300201,23.131289;113.300575,23.131363;113.300652,23.131453;113.301003,23.131493;113.301712,23.131626;113.302734,23.131758;113.303474,23.131758;113.303528,23.131758;113.304001,23.131771;113.304451,23.131775;113.305061,23.131788;113.306145,23.131800;113.306854,23.131800;113.306854,23.131802;113.307549,23.131802;113.307777,23.131819;113.308853,23.131819;113.309143,23.131823;113.309502,23.131792;113.309654,23.131779;113.309860,23.131741;113.310295,23.131659;113.310570,23.131580;113.310799,23.131502;113.310799,23.131512;113.310867,23.131493;113.310974,23.131411;113.311447,23.131207;113.312126,23.130911;113.312202,23.130838;113.312408,23.130733;113.312805,23.130564;113.312988,23.130478;113.313141,23.130404;113.313370,23.130295;113.313416,23.130255;113.313499,23.130209;113.314163,23.129887;113.314812,23.129566;113.314796,23.129480;113.314812,23.129353;113.314850,23.129250;113.314941,23.129158;113.315079,23.129084;113.315147,23.129066;113.315186,23.129057;113.315437,23.129026;113.315582,23.129040;113.315659,23.129070;113.316429,23.128702;113.316895,23.128515;113.317520,23.128273;113.318008,23.128069;113.318634,23.127773;113.318741,23.127728;113.319016,23.127630;113.319237,23.127583;113.319412,23.127560;113.319611,23.127541;113.319817,23.127535;113.321037,23.127460;113.321503,23.127468;113.321609,23.127478;113.321739,23.127522;113.323975,23.127369;113.324806,23.127323;113.324913,23.127266;113.325500,23.127239;113.326454,23.127178;113.327408,23.127117;113.327682,23.127090;113.327965,23.127071;113.328224,23.127048;113.328590,23.127022;113.329628,23.126953;113.329765,23.126944;113.329834,23.126940;113.330971,23.126875;113.332169,23.126799;113.332664,23.126762;113.333176,23.126722;113.333786,23.126684;113.333946,23.126675;113.334106,23.126671;113.334541,23.126648;113.334961,23.126627;113.334984,23.126627;113.335770,23.126602;113.336403,23.126572;113.336655,23.126562;113.336777,23.126602;113.337181,23.126566;113.337830,23.126516;113.337929,23.126507;113.338425,23.126467;113.339432,23.126398;113.339577,23.126385;113.340179,23.126347;113.340408,23.126253;113.340797,23.126221;113.341324,23.126171;113.341728,23.126139;113.341919,23.126125;113.342270,23.126102;113.342697,23.126072;113.343109,23.126047;113.343246,23.126038;113.343369,23.126028;113.343491,23.126024;113.343704,23.126011;113.343918,23.125994;113.344185,23.125978;113.344452,23.125959;113.345024,23.125916;113.345726,23.125860;113.345970,23.125834;113.346107,23.125816;113.346306,23.125793;113.347244,23.125738;113.347427,23.125769;113.347710,23.125738;113.348137,23.125673;113.348648,23.125608;113.348923,23.125565;113.350349,23.125338;113.351479,23.125170;113.351540,23.125050;113.351654,23.124945;113.351746,23.124908;113.352158,23.124836;113.352165,23.124836;113.352173,23.124830;113.352219,23.124823;113.352272,23.124796;113.352341,23.124739;113.352654,23.125004;113.353279,23.124891;113.353760,23.124805;113.355278,23.124527;113.355782,23.124432;113.356339,23.124336;113.356659,23.124237;113.357277,23.124136;113.358002,23.123997;113.358002,23.123999;113.358086,23.123980;113.358429,23.123920;113.358482,23.123907;113.358894,23.123833;113.359085,23.123793;113.359261,23.123716;113.359505,23.123663;113.360619,23.123451;113.361298,23.123306;113.361473,23.123268;113.362045,23.123116;113.362175,23.123083;113.362808,23.122910;113.364151,23.122505;113.364540,23.122400;113.364624,23.122396&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: &#39;0600&#39;, &#39;end_time&#39;: &#39;2230&#39;, &#39;via_num&#39;: &#39;9&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;东风东路站&#39;, &#39;id&#39;: &#39;440100016432016&#39;, &#39;location&#39;: &#39;113.303474,23.131758&#39;}, {&#39;name&#39;: &#39;东峻广场&#39;, &#39;id&#39;: &#39;440100016432042&#39;, &#39;location&#39;: &#39;113.306854,23.131800&#39;}, {&#39;name&#39;: &#39;锦城花园&#39;, &#39;id&#39;: &#39;440100016432043&#39;, &#39;location&#39;: &#39;113.310799,23.131502&#39;}, {&#39;name&#39;: &#39;天河&#39;, &#39;id&#39;: &#39;440100016432044&#39;, &#39;location&#39;: &#39;113.319412,23.127560&#39;}, {&#39;name&#39;: &#39;冼村&#39;, &#39;id&#39;: &#39;440100016432045&#39;, &#39;location&#39;: &#39;113.329834,23.126940&#39;}, {&#39;name&#39;: &#39;石牌村&#39;, &#39;id&#39;: &#39;440100016432021&#39;, &#39;location&#39;: &#39;113.339577,23.126385&#39;}, {&#39;name&#39;: &#39;国防大厦&#39;, &#39;id&#39;: &#39;440100016432022&#39;, &#39;location&#39;: &#39;113.345024,23.125916&#39;}, {&#39;name&#39;: &#39;华侨医院(潭村)&#39;, &#39;id&#39;: &#39;440100016432046&#39;, &#39;location&#39;: &#39;113.352158,23.124836&#39;}, {&#39;name&#39;: &#39;员村山顶&#39;, &#39;id&#39;: &#39;440100016432024&#39;, &#39;location&#39;: &#39;113.358002,23.123997&#39;}]}]}, &#39;entrance&#39;: [], &#39;exit&#39;: [], &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}, {&#39;taxi&#39;: [], &#39;walking&#39;: {&#39;origin&#39;: &#39;113.364540,23.122400&#39;, &#39;destination&#39;: &#39;113.361488,23.124657&#39;, &#39;distance&#39;: &#39;484&#39;, &#39;duration&#39;: &#39;414&#39;, &#39;steps&#39;: [{&#39;instruction&#39;: &#39;沿黄埔大道中步行253米右转&#39;, &#39;road&#39;: &#39;黄埔大道中&#39;, &#39;distance&#39;: &#39;253&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.364540,23.122400;113.364151,23.122509;113.362816,23.122908;113.362656,23.122955;113.362183,23.123081&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿天府路步行40米左转&#39;, &#39;road&#39;: &#39;天府路&#39;, &#39;distance&#39;: &#39;40&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362175,23.123081;113.362183,23.123446&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿黄埔大道中步行78米右转&#39;, &#39;road&#39;: &#39;黄埔大道中&#39;, &#39;distance&#39;: &#39;78&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362183,23.123446;113.362091,23.123472;113.361572,23.123598;113.361427,23.123625&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行41米往前走&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;41&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361427,23.123625;113.361443,23.123772;113.361443,23.124002&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行13米往前走&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;13&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361443,23.124002;113.361450,23.124128&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行59米&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;59&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361450,23.124128;113.361488,23.124657&#39;, &#39;action&#39;: [], &#39;assistant_action&#39;: []}]}, &#39;bus&#39;: {&#39;buslines&#39;: []}, &#39;entrance&#39;: [], &#39;exit&#39;: [], &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}]}, {&#39;cost&#39;: &#39;2.0&#39;, &#39;duration&#39;: &#39;3076&#39;, &#39;nightflag&#39;: &#39;0&#39;, &#39;walking_distance&#39;: &#39;1230&#39;, &#39;distance&#39;: &#39;8077&#39;, &#39;missed&#39;: &#39;0&#39;, &#39;segments&#39;: [{&#39;taxi&#39;: [], &#39;walking&#39;: {&#39;origin&#39;: &#39;113.290367,23.128555&#39;, &#39;destination&#39;: &#39;113.290771,23.124901&#39;, &#39;distance&#39;: &#39;665&#39;, &#39;duration&#39;: &#39;570&#39;, &#39;steps&#39;: [{&#39;instruction&#39;: &#39;沿岭南路步行152米左转&#39;, &#39;road&#39;: &#39;岭南路&#39;, &#39;distance&#39;: &#39;152&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290367,23.128555;113.290298,23.128311;113.290245,23.128094;113.290176,23.127834;113.290115,23.127705;113.290047,23.127596;113.289932,23.127483;113.289833,23.127426;113.289719,23.127392&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿岭南路步行75米往前走&#39;, &#39;road&#39;: &#39;岭南路&#39;, &#39;distance&#39;: &#39;75&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.289719,23.127388;113.289894,23.127035;113.289902,23.126957;113.289864,23.126745&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿杏林路步行155米左转&#39;, &#39;road&#39;: &#39;杏林路&#39;, &#39;distance&#39;: &#39;155&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.289864,23.126740;113.289742,23.126163;113.289703,23.126085;113.289635,23.126041;113.289558,23.126020;113.289474,23.126020;113.289253,23.126045;113.288940,23.126093&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行32米往前走&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;32&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.288940,23.126093;113.288879,23.125807&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿逸仙路步行16米左转&#39;, &#39;road&#39;: &#39;逸仙路&#39;, &#39;distance&#39;: &#39;16&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.288879,23.125803;113.288857,23.125769;113.288811,23.125668&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿中山二路步行167米右转&#39;, &#39;road&#39;: &#39;中山二路&#39;, &#39;distance&#39;: &#39;167&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.288803,23.125664;113.289406,23.125460;113.289635,23.125368;113.290359,23.125183&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行19米左转&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;19&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290359,23.125174;113.290298,23.125017&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿中山二路步行49米到达中山医&#39;, &#39;road&#39;: &#39;中山二路&#39;, &#39;distance&#39;: &#39;49&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.290298,23.125004;113.290352,23.125000;113.290771,23.124901&#39;, &#39;action&#39;: [], &#39;assistant_action&#39;: &#39;到达中山医&#39;}]}, &#39;bus&#39;: {&#39;buslines&#39;: [{&#39;departure_stop&#39;: {&#39;name&#39;: &#39;中山医&#39;, &#39;id&#39;: &#39;440100016496010&#39;, &#39;location&#39;: &#39;113.290749,23.124901&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;员村山顶&#39;, &#39;id&#39;: &#39;440100016496020&#39;, &#39;location&#39;: &#39;113.358765,23.123854&#39;}, &#39;name&#39;: &#39;299路(昌岗路总站--员村总站)&#39;, &#39;id&#39;: &#39;440100016496&#39;, &#39;type&#39;: &#39;普通公交线路&#39;, &#39;distance&#39;: &#39;6847&#39;, &#39;duration&#39;: &#39;2022&#39;, &#39;polyline&#39;: &#39;113.290749,23.124901;113.290932,23.124857;113.291016,23.124836;113.291519,23.124701;113.291885,23.124596;113.292168,23.124523;113.292702,23.124384;113.293228,23.124262;113.293297,23.124245;113.293922,23.124126;113.293922,23.124125;113.293938,23.124121;113.294212,23.124094;113.294777,23.124027;113.295021,23.123840;113.295113,23.123857;113.295532,23.123945;113.296631,23.124203;113.298393,23.124609;113.298965,23.124744;113.298958,23.124741;113.299690,23.124908;113.299934,23.124964;113.300186,23.125023;113.300308,23.125050;113.300552,23.125105;113.300728,23.125137;113.301308,23.125278;113.301498,23.125328;113.301636,23.125355;113.301834,23.125401;113.303017,23.125664;113.303299,23.125729;113.303902,23.125898;113.304398,23.126066;113.304596,23.126060;113.305008,23.126221;113.305466,23.126402;113.305832,23.126562;113.306145,23.126698;113.306274,23.126762;113.306519,23.126888;113.306763,23.127028;113.307343,23.127386;113.307877,23.127655;113.307991,23.127701;113.308594,23.127951;113.309082,23.128155;113.309639,23.128389;113.310265,23.128662;113.310463,23.128746;113.310776,23.128866;113.311180,23.128994;113.311455,23.129063;113.311485,23.129066;113.312157,23.129181;113.312637,23.129240;113.312988,23.129290;113.313171,23.129313;113.313622,23.129362;113.313789,23.129379;113.314018,23.129379;113.314415,23.129345;113.314705,23.129297;113.314850,23.129250;113.314941,23.129158;113.315079,23.129084;113.315147,23.129066;113.315186,23.129057;113.315437,23.129026;113.315582,23.129040;113.315659,23.129070;113.316429,23.128702;113.316895,23.128515;113.317520,23.128273;113.318008,23.128069;113.318634,23.127773;113.318741,23.127728;113.319016,23.127630;113.319237,23.127583;113.319611,23.127541;113.319817,23.127535;113.320366,23.127501;113.321037,23.127460;113.321503,23.127468;113.321609,23.127478;113.321739,23.127522;113.323975,23.127369;113.324806,23.127323;113.324913,23.127266;113.325500,23.127239;113.326225,23.127195;113.326820,23.127157;113.327408,23.127117;113.327682,23.127090;113.327965,23.127071;113.328224,23.127048;113.328590,23.127022;113.329628,23.126953;113.329765,23.126944;113.330696,23.126888;113.332169,23.126801;113.333176,23.126722;113.333786,23.126684;113.334106,23.126667;113.334984,23.126623;113.335762,23.126602;113.336388,23.126572;113.336655,23.126558;113.336769,23.126596;113.337929,23.126507;113.338432,23.126463;113.339424,23.126398;113.340195,23.126345;113.340416,23.126255;113.340454,23.126249;113.340454,23.126253;113.340797,23.126221;113.341324,23.126171;113.341728,23.126139;113.341919,23.126125;113.342270,23.126102;113.342697,23.126072;113.343109,23.126047;113.343246,23.126038;113.343369,23.126028;113.343491,23.126024;113.343704,23.126011;113.343918,23.125994;113.344185,23.125978;113.344452,23.125959;113.345039,23.125916;113.345032,23.125916;113.345726,23.125860;113.345970,23.125834;113.346107,23.125816;113.346306,23.125793;113.347244,23.125738;113.347427,23.125769;113.347710,23.125738;113.348137,23.125673;113.348648,23.125608;113.348923,23.125565;113.350349,23.125338;113.351479,23.125170;113.351540,23.125050;113.351654,23.124945;113.351746,23.124908;113.352203,23.124826;113.352219,23.124823;113.352272,23.124796;113.352341,23.124739;113.352654,23.125004;113.353279,23.124891;113.353760,23.124805;113.355278,23.124527;113.355782,23.124432;113.356339,23.124336;113.356659,23.124237;113.357277,23.124136;113.358078,23.123985;113.358429,23.123919;113.358482,23.123911;113.358765,23.123854&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: [], &#39;end_time&#39;: [], &#39;via_num&#39;: &#39;9&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;东山口&#39;, &#39;id&#39;: &#39;440100016496026&#39;, &#39;location&#39;: &#39;113.293922,23.124126&#39;}, {&#39;name&#39;: &#39;农林东&#39;, &#39;id&#39;: &#39;440100016496012&#39;, &#39;location&#39;: &#39;113.298965,23.124744&#39;}, {&#39;name&#39;: &#39;梅花村&#39;, &#39;id&#39;: &#39;440100016496013&#39;, &#39;location&#39;: &#39;113.306274,23.126762&#39;}, {&#39;name&#39;: &#39;杨箕村&#39;, &#39;id&#39;: &#39;440100016496014&#39;, &#39;location&#39;: &#39;113.311485,23.129066&#39;}, {&#39;name&#39;: &#39;天河&#39;, &#39;id&#39;: &#39;440100016496015&#39;, &#39;location&#39;: &#39;113.320366,23.127501&#39;}, {&#39;name&#39;: &#39;冼村&#39;, &#39;id&#39;: &#39;440100016496016&#39;, &#39;location&#39;: &#39;113.330696,23.126888&#39;}, {&#39;name&#39;: &#39;石牌村&#39;, &#39;id&#39;: &#39;440100016496017&#39;, &#39;location&#39;: &#39;113.340454,23.126249&#39;}, {&#39;name&#39;: &#39;国防大厦&#39;, &#39;id&#39;: &#39;440100016496018&#39;, &#39;location&#39;: &#39;113.345039,23.125916&#39;}, {&#39;name&#39;: &#39;华侨医院(潭村)&#39;, &#39;id&#39;: &#39;440100016496027&#39;, &#39;location&#39;: &#39;113.352203,23.124826&#39;}]}, {&#39;departure_stop&#39;: {&#39;name&#39;: &#39;中山医&#39;, &#39;id&#39;: &#39;440100016783041&#39;, &#39;location&#39;: &#39;113.288727,23.125538&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;员村山顶&#39;, &#39;id&#39;: &#39;440100016783017&#39;, &#39;location&#39;: &#39;113.357925,23.124014&#39;}, &#39;name&#39;: &#39;517路(广仁路总站--黄埔客运站总站)&#39;, &#39;id&#39;: &#39;440100016783&#39;, &#39;type&#39;: &#39;普通公交线路&#39;, &#39;distance&#39;: &#39;7545&#39;, &#39;duration&#39;: &#39;2156&#39;, &#39;polyline&#39;: &#39;113.288727,23.125538;113.288986,23.125425;113.289215,23.125330;113.289444,23.125252;113.289650,23.125174;113.290031,23.125074;113.290344,23.125000;113.290939,23.124857;113.291519,23.124701;113.291893,23.124601;113.292198,23.124514;113.292564,23.124422;113.292557,23.124422;113.292702,23.124384;113.293228,23.124262;113.293297,23.124245;113.293938,23.124121;113.294212,23.124094;113.294777,23.124027;113.295113,23.124136;113.295143,23.124298;113.295212,23.124640;113.295273,23.124866;113.295433,23.125269;113.295708,23.125988;113.295807,23.126221;113.295853,23.126324;113.295929,23.126539;113.295937,23.126558;113.295937,23.126553;113.295990,23.126648;113.296349,23.127205;113.296783,23.127865;113.297340,23.128658;113.297752,23.129372;113.297874,23.129740;113.297989,23.130127;113.298019,23.130386;113.298027,23.130611;113.297997,23.130938;113.298607,23.131002;113.298775,23.131039;113.298904,23.131052;113.299393,23.131138;113.299896,23.131229;113.300575,23.131363;113.300652,23.131453;113.300705,23.131458;113.300705,23.131462;113.301018,23.131516;113.301926,23.131666;113.302223,23.131710;113.302353,23.131748;113.302902,23.131771;113.303192,23.131771;113.303642,23.131771;113.303749,23.131771;113.303993,23.131771;113.304459,23.131779;113.305298,23.131788;113.306122,23.131805;113.306824,23.131805;113.307549,23.131802;113.307777,23.131819;113.308853,23.131819;113.309143,23.131823;113.309502,23.131792;113.309654,23.131779;113.309860,23.131741;113.310295,23.131659;113.310570,23.131580;113.310852,23.131489;113.310852,23.131498;113.310867,23.131493;113.310974,23.131411;113.311447,23.131207;113.312126,23.130911;113.312202,23.130838;113.312408,23.130733;113.312805,23.130564;113.312988,23.130478;113.313141,23.130404;113.313370,23.130295;113.313416,23.130255;113.313499,23.130209;113.314163,23.129887;113.314812,23.129566;113.314796,23.129480;113.314812,23.129353;113.314850,23.129250;113.314941,23.129158;113.315079,23.129084;113.315147,23.129066;113.315186,23.129057;113.315437,23.129026;113.315582,23.129040;113.315659,23.129070;113.316429,23.128702;113.316895,23.128515;113.317520,23.128273;113.318008,23.128069;113.318634,23.127773;113.318741,23.127728;113.319016,23.127630;113.319237,23.127583;113.319405,23.127560;113.319611,23.127541;113.319817,23.127535;113.321037,23.127460;113.321503,23.127468;113.321609,23.127478;113.321739,23.127522;113.323975,23.127369;113.324806,23.127323;113.324913,23.127266;113.325500,23.127239;113.326454,23.127178;113.327408,23.127117;113.327682,23.127090;113.327965,23.127071;113.328224,23.127048;113.328590,23.127022;113.329628,23.126953;113.329765,23.126944;113.329842,23.126940;113.330971,23.126875;113.332169,23.126799;113.332664,23.126762;113.333176,23.126722;113.333786,23.126684;113.333946,23.126675;113.334106,23.126671;113.334541,23.126648;113.334961,23.126627;113.334984,23.126627;113.335770,23.126602;113.336403,23.126572;113.336655,23.126562;113.336777,23.126602;113.337181,23.126566;113.337830,23.126516;113.337929,23.126507;113.338425,23.126467;113.339432,23.126398;113.339523,23.126389;113.340179,23.126347;113.340408,23.126253;113.340797,23.126221;113.341324,23.126171;113.341728,23.126139;113.341919,23.126125;113.342270,23.126102;113.342697,23.126072;113.343109,23.126047;113.343246,23.126038;113.343369,23.126028;113.343491,23.126024;113.343704,23.126011;113.343918,23.125994;113.344185,23.125978;113.344452,23.125959;113.345032,23.125916;113.345726,23.125860;113.345970,23.125834;113.346107,23.125816;113.346306,23.125793;113.347244,23.125738;113.347427,23.125769;113.347710,23.125738;113.348137,23.125673;113.348648,23.125608;113.348923,23.125565;113.350349,23.125338;113.351479,23.125170;113.351540,23.125050;113.351654,23.124945;113.351746,23.124908;113.352180,23.124830;113.352173,23.124796;113.352379,23.124762;113.352654,23.125004;113.353279,23.124891;113.353760,23.124805;113.355278,23.124527;113.355782,23.124432;113.356339,23.124336;113.356659,23.124237;113.357277,23.124136;113.357925,23.124014&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: [], &#39;end_time&#39;: [], &#39;via_num&#39;: &#39;10&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;东山口&#39;, &#39;id&#39;: &#39;440100016783042&#39;, &#39;location&#39;: &#39;113.292564,23.124422&#39;}, {&#39;name&#39;: &#39;农林下路&#39;, &#39;id&#39;: &#39;440100016783043&#39;, &#39;location&#39;: &#39;113.295937,23.126558&#39;}, {&#39;name&#39;: &#39;东风东路站&#39;, &#39;id&#39;: &#39;440100016783009&#39;, &#39;location&#39;: &#39;113.300705,23.131458&#39;}, {&#39;name&#39;: &#39;东峻广场&#39;, &#39;id&#39;: &#39;440100016783044&#39;, &#39;location&#39;: &#39;113.306824,23.131805&#39;}, {&#39;name&#39;: &#39;锦城花园&#39;, &#39;id&#39;: &#39;440100016783045&#39;, &#39;location&#39;: &#39;113.310852,23.131489&#39;}, {&#39;name&#39;: &#39;天河&#39;, &#39;id&#39;: &#39;440100016783012&#39;, &#39;location&#39;: &#39;113.319405,23.127560&#39;}, {&#39;name&#39;: &#39;冼村&#39;, &#39;id&#39;: &#39;440100016783013&#39;, &#39;location&#39;: &#39;113.329842,23.126940&#39;}, {&#39;name&#39;: &#39;石牌村&#39;, &#39;id&#39;: &#39;440100016783014&#39;, &#39;location&#39;: &#39;113.339523,23.126389&#39;}, {&#39;name&#39;: &#39;国防大厦&#39;, &#39;id&#39;: &#39;440100016783015&#39;, &#39;location&#39;: &#39;113.345032,23.125916&#39;}, {&#39;name&#39;: &#39;华侨医院(潭村)&#39;, &#39;id&#39;: &#39;440100016783046&#39;, &#39;location&#39;: &#39;113.352180,23.124830&#39;}]}, {&#39;departure_stop&#39;: {&#39;name&#39;: &#39;中山医&#39;, &#39;id&#39;: &#39;440100016390017&#39;, &#39;location&#39;: &#39;113.290741,23.124901&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;员村山顶&#39;, &#39;id&#39;: &#39;440100016390027&#39;, &#39;location&#39;: &#39;113.357857,23.124022&#39;}, &#39;name&#39;: &#39;243路(革新路总站--员村总站)&#39;, &#39;id&#39;: &#39;440100016390&#39;, &#39;type&#39;: &#39;普通公交线路&#39;, &#39;distance&#39;: &#39;6896&#39;, &#39;duration&#39;: &#39;2299&#39;, &#39;polyline&#39;: &#39;113.290741,23.124901;113.290932,23.124857;113.291016,23.124836;113.291519,23.124701;113.291885,23.124596;113.292168,23.124523;113.292702,23.124384;113.293228,23.124262;113.293297,23.124245;113.293922,23.124125;113.293938,23.124121;113.294212,23.124094;113.294777,23.124027;113.295021,23.123840;113.295113,23.123857;113.295532,23.123945;113.296631,23.124203;113.298393,23.124609;113.299141,23.124783;113.299690,23.124908;113.299934,23.124964;113.300186,23.125023;113.300308,23.125050;113.300552,23.125105;113.300728,23.125137;113.301308,23.125278;113.301498,23.125328;113.301636,23.125355;113.301834,23.125401;113.303017,23.125664;113.303299,23.125729;113.303902,23.125898;113.304398,23.126066;113.304596,23.126060;113.305008,23.126221;113.305466,23.126402;113.305832,23.126562;113.306145,23.126698;113.306252,23.126753;113.306519,23.126888;113.306763,23.127028;113.307343,23.127386;113.307877,23.127655;113.307991,23.127701;113.308594,23.127951;113.309082,23.128155;113.309639,23.128389;113.310265,23.128662;113.310463,23.128746;113.310776,23.128866;113.311180,23.128994;113.311455,23.129063;113.311478,23.129066;113.312157,23.129181;113.312637,23.129240;113.312988,23.129290;113.313171,23.129313;113.313622,23.129362;113.313789,23.129379;113.314018,23.129379;113.314415,23.129345;113.314705,23.129297;113.314850,23.129250;113.314941,23.129158;113.315079,23.129084;113.315147,23.129066;113.315186,23.129057;113.315437,23.129026;113.315582,23.129040;113.315659,23.129070;113.316429,23.128702;113.316895,23.128515;113.317520,23.128273;113.318008,23.128069;113.318634,23.127773;113.318741,23.127728;113.319016,23.127630;113.319237,23.127583;113.319611,23.127541;113.319817,23.127535;113.320320,23.127504;113.321037,23.127460;113.321503,23.127468;113.321609,23.127478;113.321739,23.127522;113.323975,23.127369;113.324806,23.127323;113.324913,23.127266;113.325500,23.127239;113.326225,23.127195;113.327179,23.127136;113.327286,23.127127;113.327408,23.127117;113.327682,23.127090;113.327965,23.127071;113.328224,23.127048;113.328590,23.127022;113.329628,23.126953;113.329765,23.126944;113.330643,23.126894;113.330971,23.126875;113.332169,23.126799;113.332664,23.126762;113.333176,23.126722;113.333786,23.126684;113.333946,23.126675;113.334106,23.126671;113.334541,23.126648;113.334961,23.126627;113.334984,23.126627;113.335304,23.126616;113.335770,23.126602;113.336403,23.126572;113.336655,23.126562;113.336777,23.126602;113.337181,23.126566;113.337830,23.126516;113.337929,23.126507;113.338425,23.126467;113.339432,23.126398;113.340179,23.126347;113.340408,23.126253;113.340469,23.126249;113.340797,23.126221;113.341324,23.126171;113.341728,23.126139;113.341919,23.126125;113.342270,23.126102;113.342697,23.126072;113.343109,23.126047;113.343246,23.126038;113.343369,23.126028;113.343491,23.126024;113.343704,23.126011;113.343918,23.125994;113.344185,23.125978;113.344452,23.125959;113.345726,23.125860;113.345970,23.125834;113.346107,23.125816;113.346306,23.125793;113.347244,23.125738;113.347427,23.125769;113.347710,23.125738;113.348045,23.125687;113.348137,23.125673;113.348648,23.125608;113.348923,23.125565;113.350349,23.125338;113.351479,23.125170;113.351540,23.125050;113.351654,23.124945;113.351746,23.124908;113.352158,23.124836;113.352165,23.124836;113.352158,23.124836;113.352234,23.124823;113.352356,23.124823;113.352661,23.125004;113.353271,23.124891;113.353760,23.124809;113.355286,23.124523;113.355789,23.124432;113.356339,23.124336;113.356659,23.124231;113.356934,23.124193;113.357269,23.124136;113.357536,23.124084;113.357857,23.124022&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: [], &#39;end_time&#39;: [], &#39;via_num&#39;: &#39;9&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;东山口&#39;, &#39;id&#39;: &#39;440100016390033&#39;, &#39;location&#39;: &#39;113.293922,23.124125&#39;}, {&#39;name&#39;: &#39;农林东&#39;, &#39;id&#39;: &#39;440100016390019&#39;, &#39;location&#39;: &#39;113.299141,23.124783&#39;}, {&#39;name&#39;: &#39;梅花村&#39;, &#39;id&#39;: &#39;440100016390020&#39;, &#39;location&#39;: &#39;113.306252,23.126753&#39;}, {&#39;name&#39;: &#39;杨箕村&#39;, &#39;id&#39;: &#39;440100016390021&#39;, &#39;location&#39;: &#39;113.311478,23.129066&#39;}, {&#39;name&#39;: &#39;天河&#39;, &#39;id&#39;: &#39;440100016390022&#39;, &#39;location&#39;: &#39;113.320320,23.127504&#39;}, {&#39;name&#39;: &#39;冼村&#39;, &#39;id&#39;: &#39;440100016390023&#39;, &#39;location&#39;: &#39;113.330643,23.126894&#39;}, {&#39;name&#39;: &#39;石牌村&#39;, &#39;id&#39;: &#39;440100016390024&#39;, &#39;location&#39;: &#39;113.340469,23.126249&#39;}, {&#39;name&#39;: &#39;国防大厦&#39;, &#39;id&#39;: &#39;440100016390025&#39;, &#39;location&#39;: &#39;113.348045,23.125687&#39;}, {&#39;name&#39;: &#39;华侨医院(潭村)&#39;, &#39;id&#39;: &#39;440100016390034&#39;, &#39;location&#39;: &#39;113.352158,23.124836&#39;}]}, {&#39;departure_stop&#39;: {&#39;name&#39;: &#39;中山医&#39;, &#39;id&#39;: &#39;440100016830017&#39;, &#39;location&#39;: &#39;113.290726,23.124905&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;员村山顶&#39;, &#39;id&#39;: &#39;440100016830027&#39;, &#39;location&#39;: &#39;113.357849,23.124022&#39;}, &#39;name&#39;: &#39;541路(恒宝广场总站--汇景新城东总站)&#39;, &#39;id&#39;: &#39;440100016830&#39;, &#39;type&#39;: &#39;普通公交线路&#39;, &#39;distance&#39;: &#39;6942&#39;, &#39;duration&#39;: &#39;1979&#39;, &#39;polyline&#39;: &#39;113.290726,23.124905;113.290932,23.124857;113.291016,23.124836;113.291519,23.124701;113.291885,23.124596;113.292168,23.124523;113.292702,23.124384;113.293228,23.124262;113.293297,23.124245;113.293930,23.124125;113.293938,23.124121;113.294212,23.124094;113.294777,23.124027;113.295021,23.123840;113.295113,23.123857;113.295532,23.123945;113.296631,23.124203;113.298393,23.124609;113.298967,23.124748;113.299324,23.124823;113.299690,23.124908;113.299934,23.124964;113.300186,23.125023;113.300308,23.125050;113.300552,23.125105;113.300728,23.125137;113.301308,23.125278;113.301498,23.125328;113.301636,23.125355;113.301834,23.125401;113.303017,23.125664;113.303299,23.125729;113.303696,23.125837;113.303902,23.125898;113.304398,23.126066;113.304596,23.126060;113.305008,23.126221;113.305466,23.126402;113.305832,23.126562;113.306145,23.126698;113.306519,23.126888;113.306763,23.127028;113.307343,23.127386;113.307877,23.127655;113.307991,23.127701;113.308594,23.127951;113.309082,23.128155;113.309639,23.128389;113.310265,23.128662;113.310463,23.128746;113.310776,23.128866;113.311180,23.128994;113.311455,23.129063;113.311501,23.129070;113.311493,23.129070;113.312157,23.129181;113.312637,23.129240;113.312988,23.129290;113.313171,23.129313;113.313622,23.129362;113.313789,23.129379;113.314018,23.129379;113.314415,23.129345;113.314705,23.129297;113.314850,23.129250;113.314941,23.129158;113.315079,23.129084;113.315147,23.129066;113.315186,23.129057;113.315437,23.129026;113.315582,23.129040;113.315659,23.129070;113.316429,23.128702;113.316895,23.128515;113.317520,23.128273;113.318008,23.128069;113.318634,23.127773;113.318741,23.127728;113.319016,23.127630;113.319237,23.127583;113.319611,23.127541;113.319817,23.127535;113.320366,23.127501;113.321037,23.127460;113.321503,23.127468;113.321609,23.127478;113.321739,23.127522;113.323975,23.127369;113.324806,23.127323;113.324913,23.127266;113.325500,23.127239;113.326454,23.127178;113.327408,23.127117;113.327682,23.127090;113.327965,23.127071;113.328224,23.127048;113.328590,23.127022;113.329628,23.126953;113.329765,23.126944;113.330673,23.126894;113.330971,23.126875;113.332169,23.126799;113.332664,23.126762;113.333176,23.126722;113.333786,23.126684;113.333946,23.126675;113.334106,23.126671;113.334541,23.126648;113.334961,23.126627;113.334984,23.126627;113.335304,23.126616;113.335770,23.126602;113.336403,23.126572;113.336655,23.126562;113.336777,23.126602;113.337181,23.126566;113.337830,23.126516;113.337929,23.126507;113.338425,23.126467;113.339203,23.126411;113.339432,23.126398;113.340179,23.126347;113.340408,23.126253;113.340523,23.126244;113.340797,23.126221;113.341324,23.126171;113.341728,23.126139;113.341919,23.126125;113.342270,23.126102;113.342697,23.126072;113.343109,23.126047;113.343246,23.126038;113.343369,23.126028;113.343491,23.126024;113.343704,23.126011;113.343918,23.125994;113.344185,23.125978;113.344452,23.125959;113.344872,23.125929;113.345726,23.125860;113.345970,23.125834;113.346107,23.125816;113.346306,23.125793;113.347244,23.125738;113.347427,23.125769;113.347710,23.125738;113.348137,23.125673;113.348648,23.125608;113.348923,23.125565;113.350349,23.125338;113.351479,23.125170;113.351540,23.125050;113.351654,23.124945;113.351746,23.124908;113.352135,23.124840;113.352234,23.124823;113.352356,23.124823;113.352661,23.125004;113.353271,23.124891;113.353760,23.124809;113.355286,23.124523;113.355789,23.124432;113.356339,23.124336;113.356659,23.124231;113.356934,23.124193;113.357269,23.124136;113.357536,23.124084;113.357849,23.124022&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: &#39;0630&#39;, &#39;end_time&#39;: &#39;2230&#39;, &#39;via_num&#39;: &#39;9&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;东山口&#39;, &#39;id&#39;: &#39;440100016830034&#39;, &#39;location&#39;: &#39;113.293930,23.124125&#39;}, {&#39;name&#39;: &#39;农林东&#39;, &#39;id&#39;: &#39;440100016830019&#39;, &#39;location&#39;: &#39;113.298967,23.124748&#39;}, {&#39;name&#39;: &#39;梅花村&#39;, &#39;id&#39;: &#39;440100016830020&#39;, &#39;location&#39;: &#39;113.303696,23.125837&#39;}, {&#39;name&#39;: &#39;杨箕村&#39;, &#39;id&#39;: &#39;440100016830021&#39;, &#39;location&#39;: &#39;113.311501,23.129070&#39;}, {&#39;name&#39;: &#39;天河&#39;, &#39;id&#39;: &#39;440100016830022&#39;, &#39;location&#39;: &#39;113.320366,23.127501&#39;}, {&#39;name&#39;: &#39;冼村&#39;, &#39;id&#39;: &#39;440100016830023&#39;, &#39;location&#39;: &#39;113.330673,23.126894&#39;}, {&#39;name&#39;: &#39;石牌村&#39;, &#39;id&#39;: &#39;440100016830024&#39;, &#39;location&#39;: &#39;113.340523,23.126244&#39;}, {&#39;name&#39;: &#39;国防大厦&#39;, &#39;id&#39;: &#39;440100016830025&#39;, &#39;location&#39;: &#39;113.344872,23.125929&#39;}, {&#39;name&#39;: &#39;华侨医院(潭村)&#39;, &#39;id&#39;: &#39;440100016830035&#39;, &#39;location&#39;: &#39;113.352135,23.124840&#39;}]}, {&#39;departure_stop&#39;: {&#39;name&#39;: &#39;中山医&#39;, &#39;id&#39;: &#39;440100016832010&#39;, &#39;location&#39;: &#39;113.290741,23.124905&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;员村山顶&#39;, &#39;id&#39;: &#39;440100016832037&#39;, &#39;location&#39;: &#39;113.357956,23.124006&#39;}, &#39;name&#39;: &#39;542路(瑞宝乡总站--员村一横路总站)&#39;, &#39;id&#39;: &#39;440100016832&#39;, &#39;type&#39;: &#39;普通公交线路&#39;, &#39;distance&#39;: &#39;7487&#39;, &#39;duration&#39;: &#39;2122&#39;, &#39;polyline&#39;: &#39;113.290741,23.124905;113.290741,23.124901;113.290932,23.124857;113.291016,23.124836;113.291519,23.124701;113.291885,23.124596;113.292168,23.124523;113.292587,23.124413;113.292702,23.124384;113.293228,23.124262;113.293297,23.124245;113.293938,23.124121;113.294212,23.124094;113.294777,23.124027;113.295113,23.124136;113.295212,23.124640;113.295273,23.124866;113.295433,23.125269;113.295708,23.125988;113.295807,23.126221;113.295853,23.126324;113.295929,23.126539;113.295990,23.126640;113.295990,23.126648;113.296158,23.126904;113.296364,23.127205;113.296684,23.127705;113.296791,23.127865;113.297318,23.128662;113.297600,23.129116;113.297737,23.129372;113.297890,23.129730;113.297989,23.130127;113.298012,23.130295;113.298027,23.130611;113.297997,23.130938;113.298607,23.131002;113.298775,23.131039;113.298904,23.131052;113.299393,23.131138;113.299896,23.131229;113.300575,23.131363;113.300652,23.131453;113.300713,23.131462;113.301003,23.131493;113.301712,23.131626;113.302734,23.131758;113.304001,23.131771;113.304451,23.131775;113.306145,23.131800;113.306824,23.131800;113.307549,23.131800;113.307770,23.131817;113.308861,23.131823;113.309135,23.131823;113.309509,23.131794;113.309868,23.131741;113.310287,23.131659;113.310570,23.131575;113.310699,23.131540;113.310867,23.131493;113.310974,23.131411;113.311447,23.131207;113.312126,23.130911;113.312202,23.130838;113.312408,23.130733;113.312805,23.130564;113.312988,23.130478;113.313141,23.130404;113.313370,23.130295;113.313416,23.130255;113.313499,23.130209;113.314163,23.129887;113.314812,23.129566;113.314796,23.129480;113.314812,23.129353;113.314850,23.129250;113.314941,23.129158;113.315079,23.129084;113.315147,23.129066;113.315186,23.129057;113.315437,23.129026;113.315582,23.129040;113.315659,23.129070;113.316429,23.128702;113.316895,23.128515;113.317520,23.128273;113.318008,23.128069;113.318634,23.127773;113.318741,23.127728;113.319016,23.127630;113.319237,23.127583;113.319397,23.127560;113.319611,23.127541;113.319817,23.127535;113.321037,23.127460;113.321503,23.127468;113.321609,23.127478;113.321739,23.127522;113.323975,23.127369;113.324806,23.127323;113.324913,23.127266;113.325500,23.127239;113.326454,23.127178;113.327408,23.127117;113.327682,23.127090;113.327965,23.127071;113.328224,23.127048;113.328590,23.127022;113.329628,23.126953;113.329765,23.126944;113.330727,23.126888;113.330971,23.126875;113.332169,23.126799;113.332664,23.126762;113.333176,23.126722;113.333786,23.126684;113.333946,23.126675;113.334106,23.126671;113.334541,23.126648;113.334961,23.126627;113.334984,23.126627;113.335304,23.126616;113.335770,23.126602;113.336403,23.126572;113.336655,23.126562;113.336777,23.126602;113.337181,23.126566;113.337830,23.126516;113.337929,23.126507;113.338425,23.126467;113.339432,23.126398;113.340179,23.126347;113.340408,23.126253;113.340477,23.126249;113.340469,23.126249;113.340797,23.126221;113.341324,23.126171;113.341728,23.126139;113.341919,23.126125;113.342270,23.126102;113.342697,23.126072;113.343109,23.126047;113.343246,23.126038;113.343369,23.126028;113.343491,23.126024;113.343704,23.126011;113.343918,23.125994;113.344185,23.125978;113.344452,23.125959;113.344894,23.125925;113.344887,23.125925;113.345726,23.125860;113.345970,23.125834;113.346107,23.125816;113.346306,23.125793;113.347244,23.125738;113.347427,23.125769;113.347710,23.125738;113.348137,23.125673;113.348648,23.125608;113.348923,23.125565;113.350349,23.125338;113.351479,23.125170;113.351540,23.125050;113.351654,23.124945;113.351746,23.124908;113.352150,23.124840;113.352234,23.124823;113.352356,23.124823;113.352661,23.125004;113.353271,23.124891;113.353760,23.124809;113.355286,23.124523;113.355789,23.124432;113.356339,23.124336;113.356659,23.124231;113.356934,23.124193;113.357269,23.124136;113.357536,23.124084;113.357956,23.124006&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: &#39;0625&#39;, &#39;end_time&#39;: &#39;2230&#39;, &#39;via_num&#39;: &#39;10&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;东山口&#39;, &#39;id&#39;: &#39;440100016832026&#39;, &#39;location&#39;: &#39;113.292587,23.124413&#39;}, {&#39;name&#39;: &#39;农林下路&#39;, &#39;id&#39;: &#39;440100016832027&#39;, &#39;location&#39;: &#39;113.295990,23.126640&#39;}, {&#39;name&#39;: &#39;东风东路站&#39;, &#39;id&#39;: &#39;440100016832013&#39;, &#39;location&#39;: &#39;113.300713,23.131462&#39;}, {&#39;name&#39;: &#39;东峻广场&#39;, &#39;id&#39;: &#39;440100016832014&#39;, &#39;location&#39;: &#39;113.306824,23.131800&#39;}, {&#39;name&#39;: &#39;锦城花园&#39;, &#39;id&#39;: &#39;440100016832028&#39;, &#39;location&#39;: &#39;113.310699,23.131540&#39;}, {&#39;name&#39;: &#39;天河&#39;, &#39;id&#39;: &#39;440100016832016&#39;, &#39;location&#39;: &#39;113.319397,23.127560&#39;}, {&#39;name&#39;: &#39;冼村&#39;, &#39;id&#39;: &#39;440100016832017&#39;, &#39;location&#39;: &#39;113.330727,23.126888&#39;}, {&#39;name&#39;: &#39;石牌村&#39;, &#39;id&#39;: &#39;440100016832018&#39;, &#39;location&#39;: &#39;113.340477,23.126249&#39;}, {&#39;name&#39;: &#39;国防大厦&#39;, &#39;id&#39;: &#39;440100016832019&#39;, &#39;location&#39;: &#39;113.344894,23.125925&#39;}, {&#39;name&#39;: &#39;华侨医院(潭村)站&#39;, &#39;id&#39;: &#39;440100016832036&#39;, &#39;location&#39;: &#39;113.352150,23.124840&#39;}]}, {&#39;departure_stop&#39;: {&#39;name&#39;: &#39;中山医&#39;, &#39;id&#39;: &#39;440100016845007&#39;, &#39;location&#39;: &#39;113.290749,23.124901&#39;}, &#39;arrival_stop&#39;: {&#39;name&#39;: &#39;员村山顶&#39;, &#39;id&#39;: &#39;440100016845016&#39;, &#39;location&#39;: &#39;113.357803,23.124031&#39;}, &#39;name&#39;: &#39;548路(珠江泳场总站--大观路北(大观湿地公园)总站)&#39;, &#39;id&#39;: &#39;440100016845&#39;, &#39;type&#39;: &#39;普通公交线路&#39;, &#39;distance&#39;: &#39;6719&#39;, &#39;duration&#39;: &#39;1996&#39;, &#39;polyline&#39;: &#39;113.290749,23.124901;113.290932,23.124857;113.291016,23.124836;113.291519,23.124701;113.291885,23.124596;113.292168,23.124523;113.292702,23.124384;113.293228,23.124262;113.293297,23.124245;113.293930,23.124125;113.293938,23.124121;113.294212,23.124094;113.294777,23.124027;113.295021,23.123840;113.295113,23.123857;113.295532,23.123945;113.296631,23.124203;113.298393,23.124609;113.298958,23.124741;113.298950,23.124741;113.299690,23.124908;113.299934,23.124964;113.300186,23.125023;113.300308,23.125050;113.300552,23.125105;113.300728,23.125137;113.301308,23.125278;113.301498,23.125328;113.301636,23.125355;113.301834,23.125401;113.303017,23.125664;113.303299,23.125729;113.303741,23.125851;113.303741,23.125856;113.303749,23.125856;113.303741,23.125856;113.303902,23.125898;113.304398,23.126066;113.304596,23.126060;113.305008,23.126221;113.305466,23.126402;113.305832,23.126562;113.306145,23.126698;113.306519,23.126888;113.306763,23.127028;113.307343,23.127386;113.307877,23.127655;113.307991,23.127701;113.308594,23.127951;113.309082,23.128155;113.309639,23.128389;113.310265,23.128662;113.310463,23.128746;113.310776,23.128866;113.311180,23.128994;113.311455,23.129063;113.311485,23.129066;113.312157,23.129181;113.312637,23.129240;113.312988,23.129290;113.313171,23.129313;113.313622,23.129362;113.313789,23.129379;113.314018,23.129379;113.314415,23.129345;113.314705,23.129297;113.314850,23.129250;113.314941,23.129158;113.315079,23.129084;113.315147,23.129066;113.315186,23.129057;113.315437,23.129026;113.315582,23.129040;113.315659,23.129070;113.316429,23.128702;113.316895,23.128515;113.317520,23.128273;113.318008,23.128069;113.318634,23.127773;113.318741,23.127728;113.319016,23.127630;113.319237,23.127583;113.319611,23.127541;113.319817,23.127535;113.320389,23.127501;113.320396,23.127501;113.320389,23.127501;113.321037,23.127460;113.321503,23.127468;113.321609,23.127478;113.321739,23.127522;113.323975,23.127369;113.324806,23.127323;113.324913,23.127266;113.325500,23.127239;113.326454,23.127178;113.327408,23.127117;113.327682,23.127090;113.327965,23.127071;113.328224,23.127048;113.328590,23.127022;113.329628,23.126953;113.329765,23.126944;113.329887,23.126936;113.330971,23.126875;113.332169,23.126799;113.332664,23.126762;113.333176,23.126722;113.333786,23.126684;113.333946,23.126675;113.334106,23.126671;113.334541,23.126648;113.334961,23.126627;113.334984,23.126627;113.335304,23.126616;113.335770,23.126602;113.336403,23.126572;113.336655,23.126562;113.336777,23.126602;113.337181,23.126566;113.337830,23.126516;113.337929,23.126507;113.338425,23.126467;113.339203,23.126411;113.339432,23.126398;113.339546,23.126389;113.340179,23.126347;113.340408,23.126253;113.340797,23.126221;113.341324,23.126171;113.341728,23.126139;113.341919,23.126125;113.342270,23.126102;113.342697,23.126072;113.343109,23.126047;113.343246,23.126038;113.343369,23.126028;113.343491,23.126024;113.343704,23.126011;113.343918,23.125994;113.344185,23.125978;113.344452,23.125959;113.344841,23.125929;113.344833,23.125929;113.345726,23.125860;113.345970,23.125834;113.346107,23.125816;113.346306,23.125793;113.347244,23.125738;113.347427,23.125769;113.347710,23.125738;113.348137,23.125673;113.348648,23.125608;113.348923,23.125565;113.350349,23.125338;113.351479,23.125170;113.351540,23.125050;113.351654,23.124945;113.351746,23.124908;113.352180,23.124830;113.352234,23.124823;113.352356,23.124823;113.352661,23.125004;113.353271,23.124891;113.353760,23.124809;113.355286,23.124523;113.355789,23.124432;113.356339,23.124336;113.356659,23.124231;113.356934,23.124193;113.357269,23.124136;113.357536,23.124084;113.357803,23.124031&#39;, &#39;bustimetag&#39;: &#39;0&#39;, &#39;start_time&#39;: [], &#39;end_time&#39;: [], &#39;via_num&#39;: &#39;9&#39;, &#39;via_stops&#39;: [{&#39;name&#39;: &#39;东山口&#39;, &#39;id&#39;: &#39;440100016845040&#39;, &#39;location&#39;: &#39;113.293930,23.124125&#39;}, {&#39;name&#39;: &#39;农林东&#39;, &#39;id&#39;: &#39;440100016845008&#39;, &#39;location&#39;: &#39;113.298958,23.124741&#39;}, {&#39;name&#39;: &#39;梅花村&#39;, &#39;id&#39;: &#39;440100016845009&#39;, &#39;location&#39;: &#39;113.303741,23.125851&#39;}, {&#39;name&#39;: &#39;杨箕村&#39;, &#39;id&#39;: &#39;440100016845010&#39;, &#39;location&#39;: &#39;113.311485,23.129066&#39;}, {&#39;name&#39;: &#39;天河&#39;, &#39;id&#39;: &#39;440100016845011&#39;, &#39;location&#39;: &#39;113.320389,23.127501&#39;}, {&#39;name&#39;: &#39;冼村&#39;, &#39;id&#39;: &#39;440100016845012&#39;, &#39;location&#39;: &#39;113.329887,23.126936&#39;}, {&#39;name&#39;: &#39;石牌村&#39;, &#39;id&#39;: &#39;440100016845013&#39;, &#39;location&#39;: &#39;113.339546,23.126389&#39;}, {&#39;name&#39;: &#39;国防大厦&#39;, &#39;id&#39;: &#39;440100016845014&#39;, &#39;location&#39;: &#39;113.344841,23.125929&#39;}, {&#39;name&#39;: &#39;华侨医院(潭村)&#39;, &#39;id&#39;: &#39;440100016845038&#39;, &#39;location&#39;: &#39;113.352180,23.124830&#39;}]}]}, &#39;entrance&#39;: [], &#39;exit&#39;: [], &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}, {&#39;taxi&#39;: [], &#39;walking&#39;: {&#39;origin&#39;: &#39;113.358719,23.123863&#39;, &#39;destination&#39;: &#39;113.361488,23.124657&#39;, &#39;distance&#39;: &#39;565&#39;, &#39;duration&#39;: &#39;484&#39;, &#39;steps&#39;: [{&#39;instruction&#39;: &#39;沿黄埔大道中步行42米靠右&#39;, &#39;road&#39;: &#39;黄埔大道中&#39;, &#39;distance&#39;: &#39;42&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.358719,23.123863;113.358894,23.123837;113.359131,23.123793&#39;, &#39;action&#39;: &#39;靠右&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿黄埔大道中步行303米左转&#39;, &#39;road&#39;: &#39;黄埔大道中&#39;, &#39;distance&#39;: &#39;303&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.359131,23.123789;113.359268,23.123720;113.359497,23.123667;113.360611,23.123455;113.360641,23.123451;113.361023,23.123363;113.361397,23.123289;113.361473,23.123272;113.361694,23.123211;113.362045,23.123121&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿天府路步行39米左转&#39;, &#39;road&#39;: &#39;天府路&#39;, &#39;distance&#39;: &#39;39&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362045,23.123116;113.362083,23.123472&#39;, &#39;action&#39;: &#39;左转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;沿黄埔大道中步行68米右转&#39;, &#39;road&#39;: &#39;黄埔大道中&#39;, &#39;distance&#39;: &#39;68&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.362083,23.123472;113.361572,23.123598;113.361427,23.123625&#39;, &#39;action&#39;: &#39;右转&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行41米往前走&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;41&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361427,23.123625;113.361443,23.123772;113.361443,23.124002&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行13米往前走&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;13&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361443,23.124002;113.361450,23.124128&#39;, &#39;action&#39;: &#39;往前走&#39;, &#39;assistant_action&#39;: []}, {&#39;instruction&#39;: &#39;步行59米&#39;, &#39;road&#39;: [], &#39;distance&#39;: &#39;59&#39;, &#39;duration&#39;: [], &#39;polyline&#39;: &#39;113.361450,23.124128;113.361488,23.124657&#39;, &#39;action&#39;: [], &#39;assistant_action&#39;: []}]}, &#39;bus&#39;: {&#39;buslines&#39;: []}, &#39;entrance&#39;: [], &#39;exit&#39;: [], &#39;railway&#39;: {&#39;via_stops&#39;: [], &#39;alters&#39;: [], &#39;spaces&#39;: []}}]}]}}
</pre>
</div>
</div>

<div class="output_area">

    <div class="prompt output_prompt">Out[294]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>status</th>
      <th>info</th>
      <th>infocode</th>
      <th>count</th>
      <th>route.origin</th>
      <th>route.destination</th>
      <th>route.distance</th>
      <th>route.taxi_cost</th>
      <th>route.transits</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>OK</td>
      <td>10000</td>
      <td>5</td>
      <td>113.290219,23.128596</td>
      <td>113.361200,23.124680</td>
      <td>7012</td>
      <td>21.7312</td>
      <td>[{'cost': '2.0', 'duration': '2693', 'nightfla...</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[353]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大_天河城</span><span class="p">[</span><span class="s2">&quot;route&quot;</span><span class="p">][</span><span class="s1">&#39;transits&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;segments&#39;</span><span class="p">])</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[353]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>taxi</th>
      <th>entrance</th>
      <th>exit</th>
      <th>walking.origin</th>
      <th>walking.destination</th>
      <th>walking.distance</th>
      <th>walking.duration</th>
      <th>walking.steps</th>
      <th>bus.buslines</th>
      <th>railway.via_stops</th>
      <th>railway.alters</th>
      <th>railway.spaces</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>113.290367,23.128555</td>
      <td>113.290771,23.124901</td>
      <td>665</td>
      <td>570</td>
      <td>[{'instruction': '沿岭南路步行152米左转', 'road': '岭南路'...</td>
      <td>[{'departure_stop': {'name': '中山医', 'id': '440...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>1</th>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>113.362358,23.125422</td>
      <td>113.361488,23.124657</td>
      <td>300</td>
      <td>257</td>
      <td>[{'instruction': '沿天府路步行92米右转', 'road': '天府路',...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[296]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大_天河城</span><span class="p">[</span><span class="s2">&quot;route&quot;</span><span class="p">][</span><span class="s1">&#39;transits&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;segments&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;bus&#39;</span><span class="p">])</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[296]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>buslines</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>[{'departure_stop': {'name': '中山医', 'id': '440...</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[297]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_bus_基本信息</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大_天河城</span><span class="p">[</span><span class="s2">&quot;route&quot;</span><span class="p">][</span><span class="s1">&#39;transits&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;segments&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;bus&#39;</span><span class="p">][</span><span class="s2">&quot;buslines&quot;</span><span class="p">])</span>
<span class="n">df_bus_基本信息</span> <span class="c1">#公交车 试试地铁！！！！！在json看参数 再来取自己需要的部分</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[297]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>name</th>
      <th>id</th>
      <th>type</th>
      <th>distance</th>
      <th>duration</th>
      <th>polyline</th>
      <th>bustimetag</th>
      <th>start_time</th>
      <th>end_time</th>
      <th>via_num</th>
      <th>via_stops</th>
      <th>departure_stop.name</th>
      <th>departure_stop.id</th>
      <th>departure_stop.location</th>
      <th>arrival_stop.name</th>
      <th>arrival_stop.id</th>
      <th>arrival_stop.location</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>B8路(宝岗大道总站--棠下小区总站)</td>
      <td>440100017371</td>
      <td>[]</td>
      <td>7586</td>
      <td>1866</td>
      <td>113.290741,23.124901;113.290932,23.124857;113....</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>10</td>
      <td>[{'name': '东山口', 'id': '440100017371038', 'loc...</td>
      <td>中山医</td>
      <td>440100017371037</td>
      <td>113.290741,23.124901</td>
      <td>天府路</td>
      <td>440100017371023</td>
      <td>113.362358,23.125360</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[298]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># C-4 公交车信息处理结果 </span>
<span class="n">_23路公交车</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中大_天河城</span><span class="p">[</span><span class="s2">&quot;route&quot;</span><span class="p">][</span><span class="s1">&#39;transits&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;segments&#39;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;bus&#39;</span><span class="p">][</span><span class="s2">&quot;buslines&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s2">&quot;via_stops&quot;</span><span class="p">])</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">columns</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;_23路公交车&quot;</span><span class="p">})</span>
<span class="c1"># _284路公交车 = pd.json_normalize(中大_天河城[&quot;route&quot;][&#39;transits&#39;][0][&#39;segments&#39;][0][&#39;bus&#39;][&quot;buslines&quot;][1][&quot;via_stops&quot;]).rename(columns={&quot;name&quot;:&quot;_284路公交车&quot;})</span>
<span class="c1"># _518路公交车 = pd.json_normalize(中大_天河城[&quot;route&quot;][&#39;transits&#39;][0][&#39;segments&#39;][0][&#39;bus&#39;][&quot;buslines&quot;][2][&quot;via_stops&quot;]).rename(columns={&quot;name&quot;:&quot;_518路公交车&quot;})</span>
<span class="n">display</span><span class="p">(</span><span class="n">_23路公交车</span><span class="p">)</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>_23路公交车</th>
      <th>id</th>
      <th>location</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>东山口</td>
      <td>440100017371038</td>
      <td>113.293930,23.124125</td>
    </tr>
    <tr>
      <th>1</th>
      <td>农林东</td>
      <td>440100017371014</td>
      <td>113.298965,23.124744</td>
    </tr>
    <tr>
      <th>2</th>
      <td>梅花村</td>
      <td>440100017371039</td>
      <td>113.306252,23.126753</td>
    </tr>
    <tr>
      <th>3</th>
      <td>杨箕村</td>
      <td>440100017371040</td>
      <td>113.311317,23.129026</td>
    </tr>
    <tr>
      <th>4</th>
      <td>天河</td>
      <td>440100017371041</td>
      <td>113.320396,23.127501</td>
    </tr>
    <tr>
      <th>5</th>
      <td>冼村</td>
      <td>440100017371042</td>
      <td>113.329674,23.126949</td>
    </tr>
    <tr>
      <th>6</th>
      <td>石牌村</td>
      <td>440100017371019</td>
      <td>113.339577,23.126385</td>
    </tr>
    <tr>
      <th>7</th>
      <td>国防大厦</td>
      <td>440100017371020</td>
      <td>113.347992,23.125694</td>
    </tr>
    <tr>
      <th>8</th>
      <td>华侨医院(潭村)</td>
      <td>440100017371043</td>
      <td>113.352112,23.124844</td>
    </tr>
    <tr>
      <th>9</th>
      <td>员村山顶</td>
      <td>440100017371022</td>
      <td>113.357857,23.124022</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#34892;&#25919;&#21306;&#22495;&#26597;&#35810;&#65288;&#20195;&#30721;D&#65289;">&#34892;&#25919;&#21306;&#22495;&#26597;&#35810;&#65288;&#20195;&#30721;D&#65289;<a class="anchor-link" href="#&#34892;&#25919;&#21306;&#22495;&#26597;&#35810;&#65288;&#20195;&#30721;D&#65289;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>思考：通过行政区域查询，我们可以通过旅行软件接入api，从而制定以及或者二级区域的地点的旅行计划。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[357]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># D-1 请注意行政区域级别划分参数</span>
<span class="k">def</span> <span class="nf">district</span><span class="p">(</span><span class="n">keywords</span><span class="p">,</span><span class="n">subdistrict</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">page</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">offset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s1">&#39;base&#39;</span><span class="p">,</span><span class="nb">filter</span><span class="o">=</span><span class="kc">None</span><span class="p">,)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/config/district?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;keywords&#39;</span><span class="p">:</span><span class="n">keywords</span><span class="p">,</span>
        <span class="s1">&#39;subdistrict&#39;</span><span class="p">:</span><span class="n">subdistrict</span><span class="p">,</span>
        <span class="s1">&#39;page&#39;</span><span class="p">:</span><span class="n">page</span><span class="p">,</span>
        <span class="s1">&#39;offset&#39;</span><span class="p">:</span><span class="n">offset</span><span class="p">,</span>
        <span class="s1">&#39;extensions&#39;</span><span class="p">:</span><span class="n">extensions</span><span class="p">,</span>
        <span class="s1">&#39;filter&#39;</span><span class="p">:</span><span class="nb">filter</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
<span class="n">行政区域</span> <span class="o">=</span> <span class="n">district</span><span class="p">(</span><span class="n">keywords</span><span class="o">=</span><span class="s1">&#39;广东&#39;</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s1">&#39;base&#39;</span><span class="p">,</span><span class="n">subdistrict</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span><span class="c1"># 此项控制行政区信息中返回行政区边界坐标点； 可选值：base、all;base:不返回行政区边界坐标点；all:只返回当前查询district的边界值，不返回子节点的边界值；目前不能返回乡镇/街道级别的边界值;subdistrict=2 指的是返回下两级行政区</span>
<span class="n">行政区域</span> <span class="c1"># 查看参数 放json 可以修改subdistrict</span>


<span class="c1"># df_行政区域_1级 = pd.json_normalize(行政区域[&quot;districts&quot;][0][&#39;districts&#39;])</span>
<span class="c1"># df_行政区域_1级)  # 修改subdistrict  规则：设置显示下级行政区级数（行政区级别包括：国家、省/直辖市、市、区/县4个级别）可选值：0、1、2、30：不返回下级行政区；1：返回下一级行政区；2：返回下两级行政区；3：返回下三级行政区；</span>
<span class="c1"># df_行政区域_2级_广州市 = pd.json_normalize(行政区域[&quot;districts&quot;][0][&#39;districts&#39;][20][&#39;districts&#39;]) #？？？？这个20是啥意思</span>
<span class="c1"># df_行政区域_2级_广州市</span>
<span class="c1"># display(df_行政区域_1级,df_行政区域_2级_广州市)</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[357]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;info&#39;: &#39;OK&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;count&#39;: &#39;1&#39;,
 &#39;suggestion&#39;: {&#39;keywords&#39;: [], &#39;cities&#39;: []},
 &#39;districts&#39;: [{&#39;citycode&#39;: [],
   &#39;adcode&#39;: &#39;440000&#39;,
   &#39;name&#39;: &#39;广东省&#39;,
   &#39;center&#39;: &#39;113.280637,23.125178&#39;,
   &#39;level&#39;: &#39;province&#39;,
   &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0758&#39;,
     &#39;adcode&#39;: &#39;441200&#39;,
     &#39;name&#39;: &#39;肇庆市&#39;,
     &#39;center&#39;: &#39;112.472529,23.051546&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0758&#39;,
       &#39;adcode&#39;: &#39;441224&#39;,
       &#39;name&#39;: &#39;怀集县&#39;,
       &#39;center&#39;: &#39;112.182466,23.913072&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0758&#39;,
       &#39;adcode&#39;: &#39;441223&#39;,
       &#39;name&#39;: &#39;广宁县&#39;,
       &#39;center&#39;: &#39;112.440419,23.631486&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0758&#39;,
       &#39;adcode&#39;: &#39;441225&#39;,
       &#39;name&#39;: &#39;封开县&#39;,
       &#39;center&#39;: &#39;111.502973,23.434731&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0758&#39;,
       &#39;adcode&#39;: &#39;441284&#39;,
       &#39;name&#39;: &#39;四会市&#39;,
       &#39;center&#39;: &#39;112.695028,23.340324&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0758&#39;,
       &#39;adcode&#39;: &#39;441226&#39;,
       &#39;name&#39;: &#39;德庆县&#39;,
       &#39;center&#39;: &#39;111.78156,23.141711&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0758&#39;,
       &#39;adcode&#39;: &#39;441203&#39;,
       &#39;name&#39;: &#39;鼎湖区&#39;,
       &#39;center&#39;: &#39;112.565249,23.155822&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0758&#39;,
       &#39;adcode&#39;: &#39;441202&#39;,
       &#39;name&#39;: &#39;端州区&#39;,
       &#39;center&#39;: &#39;112.472329,23.052662&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0758&#39;,
       &#39;adcode&#39;: &#39;441204&#39;,
       &#39;name&#39;: &#39;高要区&#39;,
       &#39;center&#39;: &#39;112.460846,23.027694&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0757&#39;,
     &#39;adcode&#39;: &#39;440600&#39;,
     &#39;name&#39;: &#39;佛山市&#39;,
     &#39;center&#39;: &#39;113.122717,23.028762&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0757&#39;,
       &#39;adcode&#39;: &#39;440607&#39;,
       &#39;name&#39;: &#39;三水区&#39;,
       &#39;center&#39;: &#39;112.899414,23.16504&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0757&#39;,
       &#39;adcode&#39;: &#39;440608&#39;,
       &#39;name&#39;: &#39;高明区&#39;,
       &#39;center&#39;: &#39;112.882123,22.893855&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0757&#39;,
       &#39;adcode&#39;: &#39;440606&#39;,
       &#39;name&#39;: &#39;顺德区&#39;,
       &#39;center&#39;: &#39;113.281826,22.75851&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0757&#39;,
       &#39;adcode&#39;: &#39;440604&#39;,
       &#39;name&#39;: &#39;禅城区&#39;,
       &#39;center&#39;: &#39;113.112414,23.019643&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0757&#39;,
       &#39;adcode&#39;: &#39;440605&#39;,
       &#39;name&#39;: &#39;南海区&#39;,
       &#39;center&#39;: &#39;113.145577,23.031562&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0754&#39;,
     &#39;adcode&#39;: &#39;440500&#39;,
     &#39;name&#39;: &#39;汕头市&#39;,
     &#39;center&#39;: &#39;116.708463,23.37102&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0754&#39;,
       &#39;adcode&#39;: &#39;440513&#39;,
       &#39;name&#39;: &#39;潮阳区&#39;,
       &#39;center&#39;: &#39;116.602602,23.262336&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0754&#39;,
       &#39;adcode&#39;: &#39;440512&#39;,
       &#39;name&#39;: &#39;濠江区&#39;,
       &#39;center&#39;: &#39;116.729528,23.279345&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0754&#39;,
       &#39;adcode&#39;: &#39;440523&#39;,
       &#39;name&#39;: &#39;南澳县&#39;,
       &#39;center&#39;: &#39;117.027105,23.419562&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0754&#39;,
       &#39;adcode&#39;: &#39;440515&#39;,
       &#39;name&#39;: &#39;澄海区&#39;,
       &#39;center&#39;: &#39;116.76336,23.46844&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0754&#39;,
       &#39;adcode&#39;: &#39;440514&#39;,
       &#39;name&#39;: &#39;潮南区&#39;,
       &#39;center&#39;: &#39;116.423607,23.249798&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0754&#39;,
       &#39;adcode&#39;: &#39;440511&#39;,
       &#39;name&#39;: &#39;金平区&#39;,
       &#39;center&#39;: &#39;116.703583,23.367071&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0754&#39;,
       &#39;adcode&#39;: &#39;440507&#39;,
       &#39;name&#39;: &#39;龙湖区&#39;,
       &#39;center&#39;: &#39;116.732015,23.373754&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0752&#39;,
     &#39;adcode&#39;: &#39;441300&#39;,
     &#39;name&#39;: &#39;惠州市&#39;,
     &#39;center&#39;: &#39;114.412599,23.079404&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0752&#39;,
       &#39;adcode&#39;: &#39;441324&#39;,
       &#39;name&#39;: &#39;龙门县&#39;,
       &#39;center&#39;: &#39;114.259986,23.723894&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0752&#39;,
       &#39;adcode&#39;: &#39;441322&#39;,
       &#39;name&#39;: &#39;博罗县&#39;,
       &#39;center&#39;: &#39;114.284254,23.167575&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0752&#39;,
       &#39;adcode&#39;: &#39;441323&#39;,
       &#39;name&#39;: &#39;惠东县&#39;,
       &#39;center&#39;: &#39;114.723092,22.983036&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0752&#39;,
       &#39;adcode&#39;: &#39;441303&#39;,
       &#39;name&#39;: &#39;惠阳区&#39;,
       &#39;center&#39;: &#39;114.469444,22.78851&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0752&#39;,
       &#39;adcode&#39;: &#39;441302&#39;,
       &#39;name&#39;: &#39;惠城区&#39;,
       &#39;center&#39;: &#39;114.413978,23.079883&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0755&#39;,
     &#39;adcode&#39;: &#39;440300&#39;,
     &#39;name&#39;: &#39;深圳市&#39;,
     &#39;center&#39;: &#39;114.085947,22.547&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0755&#39;,
       &#39;adcode&#39;: &#39;440306&#39;,
       &#39;name&#39;: &#39;宝安区&#39;,
       &#39;center&#39;: &#39;113.828671,22.754741&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0755&#39;,
       &#39;adcode&#39;: &#39;440305&#39;,
       &#39;name&#39;: &#39;南山区&#39;,
       &#39;center&#39;: &#39;113.92943,22.531221&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0755&#39;,
       &#39;adcode&#39;: &#39;440304&#39;,
       &#39;name&#39;: &#39;福田区&#39;,
       &#39;center&#39;: &#39;114.05096,22.541009&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0755&#39;,
       &#39;adcode&#39;: &#39;440308&#39;,
       &#39;name&#39;: &#39;盐田区&#39;,
       &#39;center&#39;: &#39;114.235366,22.555069&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0755&#39;,
       &#39;adcode&#39;: &#39;440303&#39;,
       &#39;name&#39;: &#39;罗湖区&#39;,
       &#39;center&#39;: &#39;114.123885,22.555341&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0755&#39;,
       &#39;adcode&#39;: &#39;440307&#39;,
       &#39;name&#39;: &#39;龙岗区&#39;,
       &#39;center&#39;: &#39;114.251372,22.721511&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0755&#39;,
       &#39;adcode&#39;: &#39;440309&#39;,
       &#39;name&#39;: &#39;龙华区&#39;,
       &#39;center&#39;: &#39;114.044346,22.691963&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0755&#39;,
       &#39;adcode&#39;: &#39;440310&#39;,
       &#39;name&#39;: &#39;坪山区&#39;,
       &#39;center&#39;: &#39;114.338441,22.69423&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0755&#39;,
       &#39;adcode&#39;: &#39;440311&#39;,
       &#39;name&#39;: &#39;光明区&#39;,
       &#39;center&#39;: &#39;113.935895,22.748816&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0756&#39;,
     &#39;adcode&#39;: &#39;440400&#39;,
     &#39;name&#39;: &#39;珠海市&#39;,
     &#39;center&#39;: &#39;113.553986,22.224979&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0756&#39;,
       &#39;adcode&#39;: &#39;440402&#39;,
       &#39;name&#39;: &#39;香洲区&#39;,
       &#39;center&#39;: &#39;113.55027,22.271249&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0756&#39;,
       &#39;adcode&#39;: &#39;440403&#39;,
       &#39;name&#39;: &#39;斗门区&#39;,
       &#39;center&#39;: &#39;113.297739,22.209117&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0756&#39;,
       &#39;adcode&#39;: &#39;440404&#39;,
       &#39;name&#39;: &#39;金湾区&#39;,
       &#39;center&#39;: &#39;113.345071,22.139122&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0759&#39;,
     &#39;adcode&#39;: &#39;440800&#39;,
     &#39;name&#39;: &#39;湛江市&#39;,
     &#39;center&#39;: &#39;110.364977,21.274898&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0759&#39;,
       &#39;adcode&#39;: &#39;440883&#39;,
       &#39;name&#39;: &#39;吴川市&#39;,
       &#39;center&#39;: &#39;110.780508,21.428453&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0759&#39;,
       &#39;adcode&#39;: &#39;440881&#39;,
       &#39;name&#39;: &#39;廉江市&#39;,
       &#39;center&#39;: &#39;110.284961,21.611281&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0759&#39;,
       &#39;adcode&#39;: &#39;440882&#39;,
       &#39;name&#39;: &#39;雷州市&#39;,
       &#39;center&#39;: &#39;110.088275,20.908523&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0759&#39;,
       &#39;adcode&#39;: &#39;440825&#39;,
       &#39;name&#39;: &#39;徐闻县&#39;,
       &#39;center&#39;: &#39;110.175718,20.326083&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0759&#39;,
       &#39;adcode&#39;: &#39;440811&#39;,
       &#39;name&#39;: &#39;麻章区&#39;,
       &#39;center&#39;: &#39;110.329167,21.265997&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0759&#39;,
       &#39;adcode&#39;: &#39;440804&#39;,
       &#39;name&#39;: &#39;坡头区&#39;,
       &#39;center&#39;: &#39;110.455632,21.24441&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0759&#39;,
       &#39;adcode&#39;: &#39;440803&#39;,
       &#39;name&#39;: &#39;霞山区&#39;,
       &#39;center&#39;: &#39;110.406382,21.194229&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0759&#39;,
       &#39;adcode&#39;: &#39;440823&#39;,
       &#39;name&#39;: &#39;遂溪县&#39;,
       &#39;center&#39;: &#39;110.255321,21.376915&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0759&#39;,
       &#39;adcode&#39;: &#39;440802&#39;,
       &#39;name&#39;: &#39;赤坎区&#39;,
       &#39;center&#39;: &#39;110.361634,21.273365&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0662&#39;,
     &#39;adcode&#39;: &#39;441700&#39;,
     &#39;name&#39;: &#39;阳江市&#39;,
     &#39;center&#39;: &#39;111.975107,21.859222&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0662&#39;,
       &#39;adcode&#39;: &#39;441781&#39;,
       &#39;name&#39;: &#39;阳春市&#39;,
       &#39;center&#39;: &#39;111.7905,22.169598&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0662&#39;,
       &#39;adcode&#39;: &#39;441702&#39;,
       &#39;name&#39;: &#39;江城区&#39;,
       &#39;center&#39;: &#39;111.968909,21.859182&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0662&#39;,
       &#39;adcode&#39;: &#39;441721&#39;,
       &#39;name&#39;: &#39;阳西县&#39;,
       &#39;center&#39;: &#39;111.617556,21.75367&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0662&#39;,
       &#39;adcode&#39;: &#39;441704&#39;,
       &#39;name&#39;: &#39;阳东区&#39;,
       &#39;center&#39;: &#39;112.011267,21.864728&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0660&#39;,
     &#39;adcode&#39;: &#39;441500&#39;,
     &#39;name&#39;: &#39;汕尾市&#39;,
     &#39;center&#39;: &#39;115.364238,22.774485&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0660&#39;,
       &#39;adcode&#39;: &#39;441523&#39;,
       &#39;name&#39;: &#39;陆河县&#39;,
       &#39;center&#39;: &#39;115.657565,23.302682&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0660&#39;,
       &#39;adcode&#39;: &#39;441502&#39;,
       &#39;name&#39;: &#39;城区&#39;,
       &#39;center&#39;: &#39;115.363667,22.776227&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0660&#39;,
       &#39;adcode&#39;: &#39;441521&#39;,
       &#39;name&#39;: &#39;海丰县&#39;,
       &#39;center&#39;: &#39;115.337324,22.971042&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0660&#39;,
       &#39;adcode&#39;: &#39;441581&#39;,
       &#39;name&#39;: &#39;陆丰市&#39;,
       &#39;center&#39;: &#39;115.644203,22.946104&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0768&#39;,
     &#39;adcode&#39;: &#39;445100&#39;,
     &#39;name&#39;: &#39;潮州市&#39;,
     &#39;center&#39;: &#39;116.632301,23.661701&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0768&#39;,
       &#39;adcode&#39;: &#39;445122&#39;,
       &#39;name&#39;: &#39;饶平县&#39;,
       &#39;center&#39;: &#39;117.00205,23.668171&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0768&#39;,
       &#39;adcode&#39;: &#39;445102&#39;,
       &#39;name&#39;: &#39;湘桥区&#39;,
       &#39;center&#39;: &#39;116.63365,23.664675&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0768&#39;,
       &#39;adcode&#39;: &#39;445103&#39;,
       &#39;name&#39;: &#39;潮安区&#39;,
       &#39;center&#39;: &#39;116.67931,23.461012&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0750&#39;,
     &#39;adcode&#39;: &#39;440700&#39;,
     &#39;name&#39;: &#39;江门市&#39;,
     &#39;center&#39;: &#39;113.094942,22.590431&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0750&#39;,
       &#39;adcode&#39;: &#39;440784&#39;,
       &#39;name&#39;: &#39;鹤山市&#39;,
       &#39;center&#39;: &#39;112.961795,22.768104&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0750&#39;,
       &#39;adcode&#39;: &#39;440783&#39;,
       &#39;name&#39;: &#39;开平市&#39;,
       &#39;center&#39;: &#39;112.692262,22.366286&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0750&#39;,
       &#39;adcode&#39;: &#39;440704&#39;,
       &#39;name&#39;: &#39;江海区&#39;,
       &#39;center&#39;: &#39;113.120601,22.572211&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0750&#39;,
       &#39;adcode&#39;: &#39;440781&#39;,
       &#39;name&#39;: &#39;台山市&#39;,
       &#39;center&#39;: &#39;112.793414,22.250713&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0750&#39;,
       &#39;adcode&#39;: &#39;440785&#39;,
       &#39;name&#39;: &#39;恩平市&#39;,
       &#39;center&#39;: &#39;112.314051,22.182956&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0750&#39;,
       &#39;adcode&#39;: &#39;440705&#39;,
       &#39;name&#39;: &#39;新会区&#39;,
       &#39;center&#39;: &#39;113.038584,22.520247&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0750&#39;,
       &#39;adcode&#39;: &#39;440703&#39;,
       &#39;name&#39;: &#39;蓬江区&#39;,
       &#39;center&#39;: &#39;113.07859,22.59677&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0766&#39;,
     &#39;adcode&#39;: &#39;445300&#39;,
     &#39;name&#39;: &#39;云浮市&#39;,
     &#39;center&#39;: &#39;112.044439,22.929801&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0766&#39;,
       &#39;adcode&#39;: &#39;445322&#39;,
       &#39;name&#39;: &#39;郁南县&#39;,
       &#39;center&#39;: &#39;111.535921,23.237709&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0766&#39;,
       &#39;adcode&#39;: &#39;445381&#39;,
       &#39;name&#39;: &#39;罗定市&#39;,
       &#39;center&#39;: &#39;111.578201,22.765415&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0766&#39;,
       &#39;adcode&#39;: &#39;445321&#39;,
       &#39;name&#39;: &#39;新兴县&#39;,
       &#39;center&#39;: &#39;112.23083,22.703204&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0766&#39;,
       &#39;adcode&#39;: &#39;445302&#39;,
       &#39;name&#39;: &#39;云城区&#39;,
       &#39;center&#39;: &#39;112.04471,22.930827&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0766&#39;,
       &#39;adcode&#39;: &#39;445303&#39;,
       &#39;name&#39;: &#39;云安区&#39;,
       &#39;center&#39;: &#39;112.005609,23.073152&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0767&#39;,
     &#39;adcode&#39;: &#39;442100&#39;,
     &#39;name&#39;: &#39;东沙群岛&#39;,
     &#39;center&#39;: &#39;116.887312,20.617512&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: []},
    {&#39;citycode&#39;: &#39;0668&#39;,
     &#39;adcode&#39;: &#39;440900&#39;,
     &#39;name&#39;: &#39;茂名市&#39;,
     &#39;center&#39;: &#39;110.919229,21.659751&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0668&#39;,
       &#39;adcode&#39;: &#39;440983&#39;,
       &#39;name&#39;: &#39;信宜市&#39;,
       &#39;center&#39;: &#39;110.941656,22.352681&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0668&#39;,
       &#39;adcode&#39;: &#39;440981&#39;,
       &#39;name&#39;: &#39;高州市&#39;,
       &#39;center&#39;: &#39;110.853251,21.915153&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0668&#39;,
       &#39;adcode&#39;: &#39;440982&#39;,
       &#39;name&#39;: &#39;化州市&#39;,
       &#39;center&#39;: &#39;110.63839,21.654953&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0668&#39;,
       &#39;adcode&#39;: &#39;440904&#39;,
       &#39;name&#39;: &#39;电白区&#39;,
       &#39;center&#39;: &#39;111.007264,21.507219&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0668&#39;,
       &#39;adcode&#39;: &#39;440902&#39;,
       &#39;name&#39;: &#39;茂南区&#39;,
       &#39;center&#39;: &#39;110.920542,21.660425&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0762&#39;,
     &#39;adcode&#39;: &#39;441600&#39;,
     &#39;name&#39;: &#39;河源市&#39;,
     &#39;center&#39;: &#39;114.697802,23.746266&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0762&#39;,
       &#39;adcode&#39;: &#39;441622&#39;,
       &#39;name&#39;: &#39;龙川县&#39;,
       &#39;center&#39;: &#39;115.256415,24.101174&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0762&#39;,
       &#39;adcode&#39;: &#39;441624&#39;,
       &#39;name&#39;: &#39;和平县&#39;,
       &#39;center&#39;: &#39;114.941473,24.44318&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0762&#39;,
       &#39;adcode&#39;: &#39;441625&#39;,
       &#39;name&#39;: &#39;东源县&#39;,
       &#39;center&#39;: &#39;114.742711,23.789093&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0762&#39;,
       &#39;adcode&#39;: &#39;441623&#39;,
       &#39;name&#39;: &#39;连平县&#39;,
       &#39;center&#39;: &#39;114.495952,24.364227&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0762&#39;,
       &#39;adcode&#39;: &#39;441602&#39;,
       &#39;name&#39;: &#39;源城区&#39;,
       &#39;center&#39;: &#39;114.696828,23.746255&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0762&#39;,
       &#39;adcode&#39;: &#39;441621&#39;,
       &#39;name&#39;: &#39;紫金县&#39;,
       &#39;center&#39;: &#39;115.184383,23.633744&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0753&#39;,
     &#39;adcode&#39;: &#39;441400&#39;,
     &#39;name&#39;: &#39;梅州市&#39;,
     &#39;center&#39;: &#39;116.117582,24.299112&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0753&#39;,
       &#39;adcode&#39;: &#39;441427&#39;,
       &#39;name&#39;: &#39;蕉岭县&#39;,
       &#39;center&#39;: &#39;116.170531,24.653313&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0753&#39;,
       &#39;adcode&#39;: &#39;441426&#39;,
       &#39;name&#39;: &#39;平远县&#39;,
       &#39;center&#39;: &#39;115.891729,24.569651&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0753&#39;,
       &#39;adcode&#39;: &#39;441481&#39;,
       &#39;name&#39;: &#39;兴宁市&#39;,
       &#39;center&#39;: &#39;115.731648,24.138077&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0753&#39;,
       &#39;adcode&#39;: &#39;441424&#39;,
       &#39;name&#39;: &#39;五华县&#39;,
       &#39;center&#39;: &#39;115.775004,23.925424&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0753&#39;,
       &#39;adcode&#39;: &#39;441402&#39;,
       &#39;name&#39;: &#39;梅江区&#39;,
       &#39;center&#39;: &#39;116.12116,24.302593&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0753&#39;,
       &#39;adcode&#39;: &#39;441423&#39;,
       &#39;name&#39;: &#39;丰顺县&#39;,
       &#39;center&#39;: &#39;116.184419,23.752771&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0753&#39;,
       &#39;adcode&#39;: &#39;441403&#39;,
       &#39;name&#39;: &#39;梅县区&#39;,
       &#39;center&#39;: &#39;116.083482,24.267825&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0753&#39;,
       &#39;adcode&#39;: &#39;441422&#39;,
       &#39;name&#39;: &#39;大埔县&#39;,
       &#39;center&#39;: &#39;116.69552,24.351587&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0769&#39;,
     &#39;adcode&#39;: &#39;441900&#39;,
     &#39;name&#39;: &#39;东莞市&#39;,
     &#39;center&#39;: &#39;113.746262,23.046237&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;莞城街道&#39;,
       &#39;center&#39;: &#39;113.743,23.0225&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;常平镇&#39;,
       &#39;center&#39;: &#39;114.036,23.0074&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;望牛墩镇&#39;,
       &#39;center&#39;: &#39;113.676,23.0683&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;大朗镇&#39;,
       &#39;center&#39;: &#39;113.939,22.8654&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;麻涌镇&#39;,
       &#39;center&#39;: &#39;113.562,22.9718&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;黄江镇&#39;,
       &#39;center&#39;: &#39;113.973,22.8121&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;凤岗镇&#39;,
       &#39;center&#39;: &#39;114.105,22.7308&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;东莞生态园&#39;,
       &#39;center&#39;: &#39;113.917,23.0806&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;桥头镇&#39;,
       &#39;center&#39;: &#39;114.065,23.0315&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;樟木头镇&#39;,
       &#39;center&#39;: &#39;114.018,22.8704&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;松山湖管委会&#39;,
       &#39;center&#39;: &#39;113.875,22.869&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;石龙镇&#39;,
       &#39;center&#39;: &#39;113.833,23.1123&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;塘厦镇&#39;,
       &#39;center&#39;: &#39;114.05,22.7713&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;寮步镇&#39;,
       &#39;center&#39;: &#39;113.888,22.9529&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;高埗镇&#39;,
       &#39;center&#39;: &#39;113.773,23.112&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;谢岗镇&#39;,
       &#39;center&#39;: &#39;114.128,22.9901&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;厚街镇&#39;,
       &#39;center&#39;: &#39;113.776,22.9097&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;虎门镇&#39;,
       &#39;center&#39;: &#39;113.797,22.8587&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;南城街道&#39;,
       &#39;center&#39;: &#39;113.737,23.0249&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;虎门港管委会&#39;,
       &#39;center&#39;: &#39;113.562,22.9718&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;横沥镇&#39;,
       &#39;center&#39;: &#39;114.006,23.0504&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;企石镇&#39;,
       &#39;center&#39;: &#39;113.99,23.0541&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;东坑镇&#39;,
       &#39;center&#39;: &#39;113.918,22.995&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;东城街道&#39;,
       &#39;center&#39;: &#39;113.757,23.0485&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;石排镇&#39;,
       &#39;center&#39;: &#39;113.988,23.068&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;洪梅镇&#39;,
       &#39;center&#39;: &#39;113.607,23.0155&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;长安镇&#39;,
       &#39;center&#39;: &#39;113.77,22.8195&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;沙田镇&#39;,
       &#39;center&#39;: &#39;113.582,22.9426&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;道滘镇&#39;,
       &#39;center&#39;: &#39;113.692,23.004&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;大岭山镇&#39;,
       &#39;center&#39;: &#39;113.843,22.9534&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;清溪镇&#39;,
       &#39;center&#39;: &#39;114.11,22.862&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;茶山镇&#39;,
       &#39;center&#39;: &#39;113.839,23.0813&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;石碣镇&#39;,
       &#39;center&#39;: &#39;113.846,23.1024&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;万江街道&#39;,
       &#39;center&#39;: &#39;113.709,23.0014&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0769&#39;,
       &#39;adcode&#39;: &#39;441900&#39;,
       &#39;name&#39;: &#39;中堂镇&#39;,
       &#39;center&#39;: &#39;113.734,23.1164&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0663&#39;,
     &#39;adcode&#39;: &#39;445200&#39;,
     &#39;name&#39;: &#39;揭阳市&#39;,
     &#39;center&#39;: &#39;116.355733,23.543778&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0663&#39;,
       &#39;adcode&#39;: &#39;445222&#39;,
       &#39;name&#39;: &#39;揭西县&#39;,
       &#39;center&#39;: &#39;115.838708,23.4273&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0663&#39;,
       &#39;adcode&#39;: &#39;445281&#39;,
       &#39;name&#39;: &#39;普宁市&#39;,
       &#39;center&#39;: &#39;116.165082,23.29788&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0663&#39;,
       &#39;adcode&#39;: &#39;445224&#39;,
       &#39;name&#39;: &#39;惠来县&#39;,
       &#39;center&#39;: &#39;116.295832,23.029834&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0663&#39;,
       &#39;adcode&#39;: &#39;445203&#39;,
       &#39;name&#39;: &#39;揭东区&#39;,
       &#39;center&#39;: &#39;116.412947,23.569887&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0663&#39;,
       &#39;adcode&#39;: &#39;445202&#39;,
       &#39;name&#39;: &#39;榕城区&#39;,
       &#39;center&#39;: &#39;116.357045,23.535524&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0763&#39;,
     &#39;adcode&#39;: &#39;441800&#39;,
     &#39;name&#39;: &#39;清远市&#39;,
     &#39;center&#39;: &#39;113.051227,23.685022&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0763&#39;,
       &#39;adcode&#39;: &#39;441882&#39;,
       &#39;name&#39;: &#39;连州市&#39;,
       &#39;center&#39;: &#39;112.379271,24.783966&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0763&#39;,
       &#39;adcode&#39;: &#39;441826&#39;,
       &#39;name&#39;: &#39;连南瑶族自治县&#39;,
       &#39;center&#39;: &#39;112.290808,24.719097&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0763&#39;,
       &#39;adcode&#39;: &#39;441825&#39;,
       &#39;name&#39;: &#39;连山壮族瑶族自治县&#39;,
       &#39;center&#39;: &#39;112.086555,24.567271&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0763&#39;,
       &#39;adcode&#39;: &#39;441881&#39;,
       &#39;name&#39;: &#39;英德市&#39;,
       &#39;center&#39;: &#39;113.405404,24.18612&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0763&#39;,
       &#39;adcode&#39;: &#39;441821&#39;,
       &#39;name&#39;: &#39;佛冈县&#39;,
       &#39;center&#39;: &#39;113.534094,23.866739&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0763&#39;,
       &#39;adcode&#39;: &#39;441823&#39;,
       &#39;name&#39;: &#39;阳山县&#39;,
       &#39;center&#39;: &#39;112.634019,24.470286&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0763&#39;,
       &#39;adcode&#39;: &#39;441803&#39;,
       &#39;name&#39;: &#39;清新区&#39;,
       &#39;center&#39;: &#39;113.015203,23.736949&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0763&#39;,
       &#39;adcode&#39;: &#39;441802&#39;,
       &#39;name&#39;: &#39;清城区&#39;,
       &#39;center&#39;: &#39;113.048698,23.688976&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0751&#39;,
     &#39;adcode&#39;: &#39;440200&#39;,
     &#39;name&#39;: &#39;韶关市&#39;,
     &#39;center&#39;: &#39;113.591544,24.801322&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0751&#39;,
       &#39;adcode&#39;: &#39;440282&#39;,
       &#39;name&#39;: &#39;南雄市&#39;,
       &#39;center&#39;: &#39;114.311231,25.115328&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0751&#39;,
       &#39;adcode&#39;: &#39;440224&#39;,
       &#39;name&#39;: &#39;仁化县&#39;,
       &#39;center&#39;: &#39;113.748627,25.088226&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0751&#39;,
       &#39;adcode&#39;: &#39;440232&#39;,
       &#39;name&#39;: &#39;乳源瑶族自治县&#39;,
       &#39;center&#39;: &#39;113.278417,24.776109&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0751&#39;,
       &#39;adcode&#39;: &#39;440204&#39;,
       &#39;name&#39;: &#39;浈江区&#39;,
       &#39;center&#39;: &#39;113.599224,24.803977&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0751&#39;,
       &#39;adcode&#39;: &#39;440203&#39;,
       &#39;name&#39;: &#39;武江区&#39;,
       &#39;center&#39;: &#39;113.588289,24.80016&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0751&#39;,
       &#39;adcode&#39;: &#39;440222&#39;,
       &#39;name&#39;: &#39;始兴县&#39;,
       &#39;center&#39;: &#39;114.067205,24.948364&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0751&#39;,
       &#39;adcode&#39;: &#39;440205&#39;,
       &#39;name&#39;: &#39;曲江区&#39;,
       &#39;center&#39;: &#39;113.605582,24.680195&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0751&#39;,
       &#39;adcode&#39;: &#39;440233&#39;,
       &#39;name&#39;: &#39;新丰县&#39;,
       &#39;center&#39;: &#39;114.207034,24.055412&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0751&#39;,
       &#39;adcode&#39;: &#39;440229&#39;,
       &#39;name&#39;: &#39;翁源县&#39;,
       &#39;center&#39;: &#39;114.131289,24.353887&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0751&#39;,
       &#39;adcode&#39;: &#39;440281&#39;,
       &#39;name&#39;: &#39;乐昌市&#39;,
       &#39;center&#39;: &#39;113.352413,25.128445&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;020&#39;,
     &#39;adcode&#39;: &#39;440100&#39;,
     &#39;name&#39;: &#39;广州市&#39;,
     &#39;center&#39;: &#39;113.280637,23.125178&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440117&#39;,
       &#39;name&#39;: &#39;从化区&#39;,
       &#39;center&#39;: &#39;113.587386,23.545283&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440115&#39;,
       &#39;name&#39;: &#39;南沙区&#39;,
       &#39;center&#39;: &#39;113.53738,22.794531&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440114&#39;,
       &#39;name&#39;: &#39;花都区&#39;,
       &#39;center&#39;: &#39;113.211184,23.39205&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440113&#39;,
       &#39;name&#39;: &#39;番禺区&#39;,
       &#39;center&#39;: &#39;113.364619,22.938582&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440103&#39;,
       &#39;name&#39;: &#39;荔湾区&#39;,
       &#39;center&#39;: &#39;113.243038,23.124943&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440105&#39;,
       &#39;name&#39;: &#39;海珠区&#39;,
       &#39;center&#39;: &#39;113.262008,23.103131&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440111&#39;,
       &#39;name&#39;: &#39;白云区&#39;,
       &#39;center&#39;: &#39;113.262831,23.162281&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440118&#39;,
       &#39;name&#39;: &#39;增城区&#39;,
       &#39;center&#39;: &#39;113.829579,23.290497&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440112&#39;,
       &#39;name&#39;: &#39;黄埔区&#39;,
       &#39;center&#39;: &#39;113.450761,23.103239&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440106&#39;,
       &#39;name&#39;: &#39;天河区&#39;,
       &#39;center&#39;: &#39;113.335367,23.13559&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;020&#39;,
       &#39;adcode&#39;: &#39;440104&#39;,
       &#39;name&#39;: &#39;越秀区&#39;,
       &#39;center&#39;: &#39;113.280714,23.125624&#39;,
       &#39;level&#39;: &#39;district&#39;,
       &#39;districts&#39;: []}]},
    {&#39;citycode&#39;: &#39;0760&#39;,
     &#39;adcode&#39;: &#39;442000&#39;,
     &#39;name&#39;: &#39;中山市&#39;,
     &#39;center&#39;: &#39;113.382391,22.521113&#39;,
     &#39;level&#39;: &#39;city&#39;,
     &#39;districts&#39;: [{&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;三角镇&#39;,
       &#39;center&#39;: &#39;113.416,22.7079&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;横栏镇&#39;,
       &#39;center&#39;: &#39;113.224,22.6048&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;五桂山街道&#39;,
       &#39;center&#39;: &#39;113.399,22.4847&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;东升镇&#39;,
       &#39;center&#39;: &#39;113.321,22.5607&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;神湾镇&#39;,
       &#39;center&#39;: &#39;113.376,22.2768&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;火炬开发区街道&#39;,
       &#39;center&#39;: &#39;113.42,22.5577&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;小榄镇&#39;,
       &#39;center&#39;: &#39;113.23,22.7026&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;南朗镇&#39;,
       &#39;center&#39;: &#39;113.482,22.519&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;古镇镇&#39;,
       &#39;center&#39;: &#39;113.167,22.6751&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;民众镇&#39;,
       &#39;center&#39;: &#39;113.499,22.6855&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;港口镇&#39;,
       &#39;center&#39;: &#39;113.354,22.6027&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;三乡镇&#39;,
       &#39;center&#39;: &#39;113.432,22.3879&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;石岐区街道&#39;,
       &#39;center&#39;: &#39;113.405,22.5247&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;大涌镇&#39;,
       &#39;center&#39;: &#39;113.297,22.4834&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;南头镇&#39;,
       &#39;center&#39;: &#39;113.328,22.6882&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;黄圃镇&#39;,
       &#39;center&#39;: &#39;113.329,22.7457&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;东区街道&#39;,
       &#39;center&#39;: &#39;113.4,22.5274&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;阜沙镇&#39;,
       &#39;center&#39;: &#39;113.34,22.6406&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;坦洲镇&#39;,
       &#39;center&#39;: &#39;113.38,22.2868&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;西区街道&#39;,
       &#39;center&#39;: &#39;113.314,22.5649&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;板芙镇&#39;,
       &#39;center&#39;: &#39;113.358,22.4068&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;沙溪镇&#39;,
       &#39;center&#39;: &#39;113.344,22.5248&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;南区街道&#39;,
       &#39;center&#39;: &#39;113.367,22.4892&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []},
      {&#39;citycode&#39;: &#39;0760&#39;,
       &#39;adcode&#39;: &#39;442000&#39;,
       &#39;name&#39;: &#39;东凤镇&#39;,
       &#39;center&#39;: &#39;113.308,22.6803&#39;,
       &#39;level&#39;: &#39;street&#39;,
       &#39;districts&#39;: []}]}]}]}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[358]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_行政区域_1级</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">行政区域</span><span class="p">[</span><span class="s2">&quot;districts&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;districts&#39;</span><span class="p">])</span>
<span class="n">df_行政区域_1级</span>  <span class="c1"># 修改subdistrict  规则：设置显示下级行政区级数（行政区级别包括：国家、省/直辖市、市、区/县4个级别）可选值：0、1、2、30：不返回下级行政区；1：返回下一级行政区；2：返回下两级行政区；3：返回下三级行政区；</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[358]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>citycode</th>
      <th>adcode</th>
      <th>name</th>
      <th>center</th>
      <th>level</th>
      <th>districts</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>0758</td>
      <td>441200</td>
      <td>肇庆市</td>
      <td>112.472529,23.051546</td>
      <td>city</td>
      <td>[{'citycode': '0758', 'adcode': '441224', 'nam...</td>
    </tr>
    <tr>
      <th>1</th>
      <td>0757</td>
      <td>440600</td>
      <td>佛山市</td>
      <td>113.122717,23.028762</td>
      <td>city</td>
      <td>[{'citycode': '0757', 'adcode': '440607', 'nam...</td>
    </tr>
    <tr>
      <th>2</th>
      <td>0754</td>
      <td>440500</td>
      <td>汕头市</td>
      <td>116.708463,23.37102</td>
      <td>city</td>
      <td>[{'citycode': '0754', 'adcode': '440513', 'nam...</td>
    </tr>
    <tr>
      <th>3</th>
      <td>0752</td>
      <td>441300</td>
      <td>惠州市</td>
      <td>114.412599,23.079404</td>
      <td>city</td>
      <td>[{'citycode': '0752', 'adcode': '441324', 'nam...</td>
    </tr>
    <tr>
      <th>4</th>
      <td>0755</td>
      <td>440300</td>
      <td>深圳市</td>
      <td>114.085947,22.547</td>
      <td>city</td>
      <td>[{'citycode': '0755', 'adcode': '440306', 'nam...</td>
    </tr>
    <tr>
      <th>5</th>
      <td>0756</td>
      <td>440400</td>
      <td>珠海市</td>
      <td>113.553986,22.224979</td>
      <td>city</td>
      <td>[{'citycode': '0756', 'adcode': '440402', 'nam...</td>
    </tr>
    <tr>
      <th>6</th>
      <td>0759</td>
      <td>440800</td>
      <td>湛江市</td>
      <td>110.364977,21.274898</td>
      <td>city</td>
      <td>[{'citycode': '0759', 'adcode': '440883', 'nam...</td>
    </tr>
    <tr>
      <th>7</th>
      <td>0662</td>
      <td>441700</td>
      <td>阳江市</td>
      <td>111.975107,21.859222</td>
      <td>city</td>
      <td>[{'citycode': '0662', 'adcode': '441781', 'nam...</td>
    </tr>
    <tr>
      <th>8</th>
      <td>0660</td>
      <td>441500</td>
      <td>汕尾市</td>
      <td>115.364238,22.774485</td>
      <td>city</td>
      <td>[{'citycode': '0660', 'adcode': '441523', 'nam...</td>
    </tr>
    <tr>
      <th>9</th>
      <td>0768</td>
      <td>445100</td>
      <td>潮州市</td>
      <td>116.632301,23.661701</td>
      <td>city</td>
      <td>[{'citycode': '0768', 'adcode': '445122', 'nam...</td>
    </tr>
    <tr>
      <th>10</th>
      <td>0750</td>
      <td>440700</td>
      <td>江门市</td>
      <td>113.094942,22.590431</td>
      <td>city</td>
      <td>[{'citycode': '0750', 'adcode': '440784', 'nam...</td>
    </tr>
    <tr>
      <th>11</th>
      <td>0766</td>
      <td>445300</td>
      <td>云浮市</td>
      <td>112.044439,22.929801</td>
      <td>city</td>
      <td>[{'citycode': '0766', 'adcode': '445322', 'nam...</td>
    </tr>
    <tr>
      <th>12</th>
      <td>0767</td>
      <td>442100</td>
      <td>东沙群岛</td>
      <td>116.887312,20.617512</td>
      <td>city</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>13</th>
      <td>0668</td>
      <td>440900</td>
      <td>茂名市</td>
      <td>110.919229,21.659751</td>
      <td>city</td>
      <td>[{'citycode': '0668', 'adcode': '440983', 'nam...</td>
    </tr>
    <tr>
      <th>14</th>
      <td>0762</td>
      <td>441600</td>
      <td>河源市</td>
      <td>114.697802,23.746266</td>
      <td>city</td>
      <td>[{'citycode': '0762', 'adcode': '441622', 'nam...</td>
    </tr>
    <tr>
      <th>15</th>
      <td>0753</td>
      <td>441400</td>
      <td>梅州市</td>
      <td>116.117582,24.299112</td>
      <td>city</td>
      <td>[{'citycode': '0753', 'adcode': '441427', 'nam...</td>
    </tr>
    <tr>
      <th>16</th>
      <td>0769</td>
      <td>441900</td>
      <td>东莞市</td>
      <td>113.746262,23.046237</td>
      <td>city</td>
      <td>[{'citycode': '0769', 'adcode': '441900', 'nam...</td>
    </tr>
    <tr>
      <th>17</th>
      <td>0663</td>
      <td>445200</td>
      <td>揭阳市</td>
      <td>116.355733,23.543778</td>
      <td>city</td>
      <td>[{'citycode': '0663', 'adcode': '445222', 'nam...</td>
    </tr>
    <tr>
      <th>18</th>
      <td>0763</td>
      <td>441800</td>
      <td>清远市</td>
      <td>113.051227,23.685022</td>
      <td>city</td>
      <td>[{'citycode': '0763', 'adcode': '441882', 'nam...</td>
    </tr>
    <tr>
      <th>19</th>
      <td>0751</td>
      <td>440200</td>
      <td>韶关市</td>
      <td>113.591544,24.801322</td>
      <td>city</td>
      <td>[{'citycode': '0751', 'adcode': '440282', 'nam...</td>
    </tr>
    <tr>
      <th>20</th>
      <td>020</td>
      <td>440100</td>
      <td>广州市</td>
      <td>113.280637,23.125178</td>
      <td>city</td>
      <td>[{'citycode': '020', 'adcode': '440117', 'name...</td>
    </tr>
    <tr>
      <th>21</th>
      <td>0760</td>
      <td>442000</td>
      <td>中山市</td>
      <td>113.382391,22.521113</td>
      <td>city</td>
      <td>[{'citycode': '0760', 'adcode': '442000', 'nam...</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[359]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># D-2 2级区域地址</span>
<span class="n">df_行政区域_2级_广州市</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">行政区域</span><span class="p">[</span><span class="s2">&quot;districts&quot;</span><span class="p">][</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;districts&#39;</span><span class="p">][</span><span class="mi">20</span><span class="p">][</span><span class="s1">&#39;districts&#39;</span><span class="p">])</span> <span class="c1">#json 文档可以看到里面的结构[]</span>
<span class="n">df_行政区域_2级_广州市</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[359]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>citycode</th>
      <th>adcode</th>
      <th>name</th>
      <th>center</th>
      <th>level</th>
      <th>districts</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>020</td>
      <td>440117</td>
      <td>从化区</td>
      <td>113.587386,23.545283</td>
      <td>district</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>1</th>
      <td>020</td>
      <td>440115</td>
      <td>南沙区</td>
      <td>113.53738,22.794531</td>
      <td>district</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>2</th>
      <td>020</td>
      <td>440114</td>
      <td>花都区</td>
      <td>113.211184,23.39205</td>
      <td>district</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>3</th>
      <td>020</td>
      <td>440113</td>
      <td>番禺区</td>
      <td>113.364619,22.938582</td>
      <td>district</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>4</th>
      <td>020</td>
      <td>440103</td>
      <td>荔湾区</td>
      <td>113.243038,23.124943</td>
      <td>district</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>5</th>
      <td>020</td>
      <td>440105</td>
      <td>海珠区</td>
      <td>113.262008,23.103131</td>
      <td>district</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>6</th>
      <td>020</td>
      <td>440111</td>
      <td>白云区</td>
      <td>113.262831,23.162281</td>
      <td>district</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>7</th>
      <td>020</td>
      <td>440118</td>
      <td>增城区</td>
      <td>113.829579,23.290497</td>
      <td>district</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>8</th>
      <td>020</td>
      <td>440112</td>
      <td>黄埔区</td>
      <td>113.450761,23.103239</td>
      <td>district</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>9</th>
      <td>020</td>
      <td>440106</td>
      <td>天河区</td>
      <td>113.335367,23.13559</td>
      <td>district</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>10</th>
      <td>020</td>
      <td>440104</td>
      <td>越秀区</td>
      <td>113.280714,23.125624</td>
      <td>district</td>
      <td>[]</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#25628;&#32034;POI">&#25628;&#32034;POI<a class="anchor-link" href="#&#25628;&#32034;POI">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>思考：通过关键字POI查询，我们可以设计一个高考志愿填报的软件，接入关键字地区查询，或是成绩录取分数段，就可以搜获得出相应的学校名称及其地理信息。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#20851;&#38190;&#23383;&#25628;&#32034;&#65288;&#20195;&#30721;E&#65289;">&#20851;&#38190;&#23383;&#25628;&#32034;&#65288;&#20195;&#30721;E&#65289;<a class="anchor-link" href="#&#20851;&#38190;&#23383;&#25628;&#32034;&#65288;&#20195;&#30721;E&#65289;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[302]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># E-1</span>
<span class="k">def</span> <span class="nf">place_text</span><span class="p">(</span><span class="n">keywords</span><span class="p">,</span><span class="n">types</span><span class="p">,</span><span class="n">city</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">citylimit</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">children</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">page</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s1">&#39;base&#39;</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/place/text?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;keywords&#39;</span><span class="p">:</span><span class="n">keywords</span><span class="p">,</span>
        <span class="s1">&#39;types&#39;</span><span class="p">:</span><span class="n">types</span><span class="p">,</span>
        <span class="s1">&#39;city&#39;</span><span class="p">:</span><span class="n">city</span><span class="p">,</span>
        <span class="s1">&#39;citylimit&#39;</span><span class="p">:</span><span class="n">citylimit</span><span class="p">,</span>
        <span class="s1">&#39;children&#39;</span><span class="p">:</span><span class="n">children</span><span class="p">,</span>
        <span class="s1">&#39;page&#39;</span><span class="p">:</span><span class="n">page</span><span class="p">,</span>
        <span class="s1">&#39;extensions&#39;</span><span class="p">:</span><span class="n">extensions</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>

<span class="n">广州_大学</span> <span class="o">=</span> <span class="n">place_text</span><span class="p">(</span><span class="s1">&#39;大学&#39;</span><span class="p">,</span><span class="s1">&#39;高等院校&#39;</span><span class="p">,</span><span class="n">city</span><span class="o">=</span><span class="s2">&quot;广州市&quot;</span><span class="p">,</span><span class="n">children</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s1">&#39;all&#39;</span><span class="p">)</span><span class="c1"># 除了关键字也可以在文档里面查关键字的编码 keywords=None，types=&#39;中学&#39;</span>
<span class="n">广州_大学</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[302]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;count&#39;: &#39;302&#39;,
 &#39;info&#39;: &#39;OK&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;suggestion&#39;: {&#39;keywords&#39;: [], &#39;cities&#39;: []},
 &#39;pois&#39;: [{&#39;id&#39;: &#39;B00140458B&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广东工业大学(龙洞校区)&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;迎龙路161号&#39;,
   &#39;location&#39;: &#39;113.359713,23.19677&#39;,
   &#39;tel&#39;: &#39;020-87082921&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440106&#39;,
   &#39;adname&#39;: &#39;天河区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413623812&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F010043_72087&#39;,
   &#39;entr_location&#39;: &#39;113.364790,23.195436&#39;,
   &#39;business_area&#39;: &#39;龙洞&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-03-15 20:21:25&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [{&#39;id&#39;: &#39; B00141HYUW &#39;,
     &#39;name&#39;: &#39; 广东工业大学龙洞校区(东南门) &#39;,
     &#39;sname&#39;: &#39; 东南门 &#39;,
     &#39;location&#39;: &#39;113.364707,23.195460&#39;,
     &#39;address&#39;: &#39; 龙洞街迎龙路161号 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991400 &#39;}],
   &#39;photos&#39;: [{&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/141b7659bc7aeb993100980808f322a9&#39;},
    {&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/92efcbabaf296256cf568049791cbf8c&#39;},
    {&#39;title&#39;: &#39;外景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/0279761ff16fc3dcd10e5912a51c026b&#39;}]},
  {&#39;id&#39;: &#39;B0FFFFQZDE&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广州医科大学越秀校区&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;东风西路195号&#39;,
   &#39;location&#39;: &#39;113.256131,23.134038&#39;,
   &#39;tel&#39;: &#39;020-81340278;020-81340448&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440104&#39;,
   &#39;adname&#39;: &#39;越秀区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413525021&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F011043_603745&#39;,
   &#39;entr_location&#39;: &#39;113.255942,23.135396&#39;,
   &#39;business_area&#39;: &#39;东风&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-03-25 11:57:58&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/bd42c117adc1b03b2dc77821754276ed&#39;},
    {&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/87d1ed25ddca859aa8886312aa8d5837&#39;},
    {&#39;title&#39;: &#39;外景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/d0b8c1500ff522ab27d0f92cfa022ef4&#39;}]},
  {&#39;id&#39;: &#39;B00141IHRZ&#39;,
   &#39;parent&#39;: &#39;B0FFIGLX5N&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;中山大学广州校区南校园&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;新港西路135号&#39;,
   &#39;location&#39;: &#39;113.298415,23.096714&#39;,
   &#39;tel&#39;: &#39;020-84112828;020-84036491&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440105&#39;,
   &#39;adname&#39;: &#39;海珠区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413521312&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F011043_948758;71653&#39;,
   &#39;entr_location&#39;: &#39;113.297039,23.091104&#39;,
   &#39;business_area&#39;: &#39;新港&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-22 11:33:30&#39;,
   &#39;alias&#39;: &#39;中山大学南校区|广州中大&#39;,
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: &#39;4.5&#39;, &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [{&#39;id&#39;: &#39; B00140TAV2 &#39;,
     &#39;name&#39;: &#39; 中山大学南校区(北门) &#39;,
     &#39;sname&#39;: &#39; 北门 &#39;,
     &#39;location&#39;: &#39;113.300039,23.102687&#39;,
     &#39;address&#39;: &#39; 新港西路135号中山大学南校区东北区398号 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 990000 &#39;},
    {&#39;id&#39;: &#39; B00140TVAB &#39;,
     &#39;name&#39;: &#39; 中山大学广州校区南校园(南门) &#39;,
     &#39;sname&#39;: &#39; 南门 &#39;,
     &#39;location&#39;: &#39;113.29705,23.091124&#39;,
     &#39;address&#39;: &#39; 新港西路135号中山大学南校区 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991400 &#39;},
    {&#39;id&#39;: &#39; B00140AQP4 &#39;,
     &#39;name&#39;: &#39; 中山大学广州校区南校园(西门) &#39;,
     &#39;sname&#39;: &#39; 西门 &#39;,
     &#39;location&#39;: &#39;113.2914,23.092947&#39;,
     &#39;address&#39;: &#39; 新港西路135号中山大学南校区 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991400 &#39;},
    {&#39;id&#39;: &#39; B001402641 &#39;,
     &#39;name&#39;: &#39; 中山大学广州校区南校园(东校门) &#39;,
     &#39;sname&#39;: &#39; 东校门 &#39;,
     &#39;location&#39;: &#39;113.303862,23.094743&#39;,
     &#39;address&#39;: &#39; 新港西路135号 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991400 &#39;}],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/f2ffc7743773caf2aab3929e9e02a997&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/4699806b0fc67194a8c6ee5cf3ed6266&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/a9dd44d4d4e70cf01aaf96da95c4f35b&#39;}]},
  {&#39;id&#39;: &#39;B00140W6FI&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广东交通职业技术学院花都校区&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;工业大道东11号&#39;,
   &#39;location&#39;: &#39;113.203282,23.366957&#39;,
   &#39;tel&#39;: &#39;020-86863468&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440114&#39;,
   &#39;adname&#39;: &#39;花都区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3513014600&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F008042_198173;128817&#39;,
   &#39;entr_location&#39;: &#39;113.202664,23.367478&#39;,
   &#39;business_area&#39;: [],
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-15 12:41:37&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [{&#39;id&#39;: &#39; B00140UFHS &#39;,
     &#39;name&#39;: &#39; 广东交通职业技术学院花都校区(西北门) &#39;,
     &#39;sname&#39;: &#39; 西北门 &#39;,
     &#39;location&#39;: &#39;113.202680,23.367438&#39;,
     &#39;address&#39;: &#39; 新华镇工业大道11号 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991401 &#39;}],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/844717a66f6f45f3e8781c27fa387180&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/48e6c18adacdbb4f44cb0301fd4ea1b0&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/2c25a049ffb4a676f6bdf6babe9532bc&#39;}]},
  {&#39;id&#39;: &#39;B001409A53&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广东培正学院&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;培正路53号&#39;,
   &#39;location&#39;: &#39;113.090459,23.410542&#39;,
   &#39;tel&#39;: &#39;020-86710904&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440114&#39;,
   &#39;adname&#39;: &#39;花都区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3513009700&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F008041_54&#39;,
   &#39;entr_location&#39;: &#39;113.092929,23.409245&#39;,
   &#39;business_area&#39;: &#39;赤坭村&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-03-24 15:52:06&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [{&#39;id&#39;: &#39; B0FFIIMMY2 &#39;,
     &#39;name&#39;: &#39; 广东培正学院(北门) &#39;,
     &#39;sname&#39;: &#39; 北门 &#39;,
     &#39;location&#39;: &#39;113.094676,23.414785&#39;,
     &#39;address&#39;: &#39; 培正路53号 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991400 &#39;},
    {&#39;id&#39;: &#39; B00141J9HV &#39;,
     &#39;name&#39;: &#39; 广东培正学院(东南门) &#39;,
     &#39;sname&#39;: &#39; 东南门 &#39;,
     &#39;location&#39;: &#39;113.092901,23.409255&#39;,
     &#39;address&#39;: &#39; 培正路53号 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991400 &#39;},
    {&#39;id&#39;: &#39; B0FFI5W8P2 &#39;,
     &#39;name&#39;: &#39; 广东培正学院停车场 &#39;,
     &#39;sname&#39;: &#39; 停车场 &#39;,
     &#39;location&#39;: &#39;113.091820,23.409761&#39;,
     &#39;address&#39;: &#39; 赤坭镇培正路53号广东培正学院 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;停车场&#39;,
     &#39;typecode&#39;: &#39; 150904 &#39;}],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/8d549f92c5aeb4926695f220094b142c&#39;},
    {&#39;title&#39;: &#39;外景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/5576356f53037759b1cddc9dd2fcd60a&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/1fe4dfacc5459332c9878d0acd5cd381&#39;}]},
  {&#39;id&#39;: &#39;B00140BQCP&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广州美术学院(大学城校区)&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;大学城外环西路168号&#39;,
   &#39;location&#39;: &#39;113.382675,23.038572&#39;,
   &#39;tel&#39;: [],
   &#39;postcode&#39;: [],
   &#39;website&#39;: &#39;www.gzarts.edu.cn&#39;,
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440113&#39;,
   &#39;adname&#39;: &#39;番禺区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413434011&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F012044_85969&#39;,
   &#39;entr_location&#39;: &#39;113.385018,23.037662&#39;,
   &#39;business_area&#39;: [],
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-17 15:58:24&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: &#39;4.7&#39;, &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [{&#39;id&#39;: &#39; B00141J1UH &#39;,
     &#39;name&#39;: &#39; 广州美术学院大学城校区(南2门) &#39;,
     &#39;sname&#39;: &#39; 南2门 &#39;,
     &#39;location&#39;: &#39;113.382624,23.035882&#39;,
     &#39;address&#39;: &#39; 大学城外环西路168号 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991400 &#39;},
    {&#39;id&#39;: &#39; B001423P0V &#39;,
     &#39;name&#39;: &#39; 广州美术学院大学城校区停车场 &#39;,
     &#39;sname&#39;: &#39; 停车场 &#39;,
     &#39;location&#39;: &#39;113.383304,23.036106&#39;,
     &#39;address&#39;: &#39; 大学城外环西路北150米 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;停车场&#39;,
     &#39;typecode&#39;: &#39; 150904 &#39;}],
   &#39;photos&#39;: [{&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/c68c8d3ed1df8f9d7b5d36d80fa9c439&#39;},
    {&#39;title&#39;: &#39;外景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/bfe8557b23557222319299609d428374&#39;},
    {&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/bcb2efea79f4979b4778cd1a0ed60cad&#39;}]},
  {&#39;id&#39;: &#39;B00140WEMJ&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广东外语外贸大学(北校区)&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;白云大道北2号&#39;,
   &#39;location&#39;: &#39;113.29248,23.200471&#39;,
   &#39;tel&#39;: &#39;020-36204310;020-36209026;020-83308484&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440111&#39;,
   &#39;adname&#39;: &#39;白云区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413624301&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F010043_793967;73408&#39;,
   &#39;entr_location&#39;: &#39;113.287576,23.199968&#39;,
   &#39;business_area&#39;: &#39;白云大道&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-20 17:18:58&#39;,
   &#39;alias&#39;: &#39;外语外贸大学&#39;,
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [{&#39;id&#39;: &#39; B00140B6G3 &#39;,
     &#39;name&#39;: &#39; 广东外语外贸大学北校区(西门) &#39;,
     &#39;sname&#39;: &#39; 西门 &#39;,
     &#39;location&#39;: &#39;113.287583,23.199975&#39;,
     &#39;address&#39;: &#39; 白云大道北2号 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991400 &#39;},
    {&#39;id&#39;: &#39; B00141KHZV &#39;,
     &#39;name&#39;: &#39; 广东外语外贸大学北校区停车场 &#39;,
     &#39;sname&#39;: &#39; 停车场 &#39;,
     &#39;location&#39;: &#39;113.289056,23.197722&#39;,
     &#39;address&#39;: &#39; 白云大道北2号广东外语外贸大学北校区内 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;停车场&#39;,
     &#39;typecode&#39;: &#39; 150904 &#39;},
    {&#39;id&#39;: &#39; B00141HX4Z &#39;,
     &#39;name&#39;: &#39; 广东外语外贸大学北校区停车场 &#39;,
     &#39;sname&#39;: &#39; 停车场 &#39;,
     &#39;location&#39;: &#39;113.293020,23.198988&#39;,
     &#39;address&#39;: &#39; 白云大道北2号广东外语外贸大学北校区内 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;停车场&#39;,
     &#39;typecode&#39;: &#39; 150904 &#39;},
    {&#39;id&#39;: &#39; B0FFG67WJR &#39;,
     &#39;name&#39;: &#39; 广东外语外贸大学北校区停车场 &#39;,
     &#39;sname&#39;: &#39; 停车场 &#39;,
     &#39;location&#39;: &#39;113.297436,23.197607&#39;,
     &#39;address&#39;: &#39; 白云大道北2号广东外语外贸大学北校区内 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;停车场&#39;,
     &#39;typecode&#39;: &#39; 150904 &#39;},
    {&#39;id&#39;: &#39; B0FFG69GAZ &#39;,
     &#39;name&#39;: &#39; 广东外语外贸大学北校区停车场 &#39;,
     &#39;sname&#39;: &#39; 停车场 &#39;,
     &#39;location&#39;: &#39;113.291531,23.205214&#39;,
     &#39;address&#39;: &#39; 白云大道北2号广东外语外贸大学北校区内 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;停车场&#39;,
     &#39;typecode&#39;: &#39; 150904 &#39;},
    {&#39;id&#39;: &#39; B0FFG68MX2 &#39;,
     &#39;name&#39;: &#39; 广东外语外贸大学北校区停车场 &#39;,
     &#39;sname&#39;: &#39; 停车场 &#39;,
     &#39;location&#39;: &#39;113.291149,23.200591&#39;,
     &#39;address&#39;: &#39; 白云大道北2号广东外语外贸大学北校区内 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;停车场&#39;,
     &#39;typecode&#39;: &#39; 150904 &#39;}],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/50be85cf4cd3a3cea167482f336a32a8&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/7db4b9407ff72f88fe36c248618bca8f&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/53dcfc72013d754ba1ef87bc49c8096f&#39;}]},
  {&#39;id&#39;: &#39;B00140UF1D&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广东技术师范大学&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;中山大道西293号&#39;,
   &#39;location&#39;: &#39;113.371742,23.131147&#39;,
   &#39;tel&#39;: &#39;020-38257322;020-38256659&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: &#39;www.gdin.edu.cn&#39;,
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440106&#39;,
   &#39;adname&#39;: &#39;天河区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413525922&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F011043_699041&#39;,
   &#39;entr_location&#39;: &#39;113.371510,23.129655&#39;,
   &#39;business_area&#39;: &#39;上社村&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-08 16:27:47&#39;,
   &#39;alias&#39;: &#39;广东师范技术学院|广东技术师范学院&#39;,
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [{&#39;id&#39;: &#39; B00140TVFC &#39;,
     &#39;name&#39;: &#39; 广东技术师范大学(西南门) &#39;,
     &#39;sname&#39;: &#39; 西南门 &#39;,
     &#39;location&#39;: &#39;113.371504,23.129789&#39;,
     &#39;address&#39;: &#39; 中山大道西293号 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991401 &#39;}],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/5840a03dded03463d363d684d1892526&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/7b6d43a8d7706f1ff22812921d64e08f&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/803a8ffcf7f6b1969c5757c8c4b252ef&#39;}]},
  {&#39;id&#39;: &#39;B00141OISJ&#39;,
   &#39;parent&#39;: &#39;B00140385E&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;广州中医药大学三元里校区&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;机场路12号&#39;,
   &#39;location&#39;: &#39;113.26713,23.156024&#39;,
   &#39;tel&#39;: &#39;020-86363563&#39;,
   &#39;postcode&#39;: &#39;510405&#39;,
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440111&#39;,
   &#39;adname&#39;: &#39;白云区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413528121&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F011043_604051&#39;,
   &#39;entr_location&#39;: &#39;113.263788,23.155384&#39;,
   &#39;business_area&#39;: [],
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-13 18:40:53&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: &#39;4.0&#39;, &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/94ad9e0cd1db5ab6667f96a579af7d27&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/e5ef18f21bca2a71f0cf64c850418a6a&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/1662a71826f8fc86d4e630f85e25113c&#39;}]},
  {&#39;id&#39;: &#39;B0FFGH24MR&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;暨南大学&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: [],
   &#39;location&#39;: &#39;113.349402,23.133382&#39;,
   &#39;tel&#39;: [],
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440106&#39;,
   &#39;adname&#39;: &#39;天河区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413526702&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: [],
   &#39;entr_location&#39;: &#39;113.349745,23.135584&#39;,
   &#39;business_area&#39;: [],
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-17 15:07:11&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: &#39;4.4&#39;, &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/60316bdae9210287f633765a48dc9f64&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/cc78db94234f74db4d2cea123e67c356&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/8d1f76d52a69f6a9e54a92c30cea9d5e&#39;}]},
  {&#39;id&#39;: &#39;B00140A367&#39;,
   &#39;parent&#39;: &#39;B0FFK7GDEE&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;广州大学桂花岗校区&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;桂花岗东1号&#39;,
   &#39;location&#39;: &#39;113.266066,23.149009&#39;,
   &#39;tel&#39;: &#39;020-36196087&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440104&#39;,
   &#39;adname&#39;: &#39;越秀区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413527120&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F011043_781965;721040;923924;721078;721080&#39;,
   &#39;entr_location&#39;: &#39;113.265865,23.149747&#39;,
   &#39;business_area&#39;: &#39;解放北&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-15 13:55:31&#39;,
   &#39;alias&#39;: &#39;桂花岗广州大学&#39;,
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [{&#39;id&#39;: &#39; B00140UG32 &#39;,
     &#39;name&#39;: &#39; 广州大学桂花岗校区(东北门) &#39;,
     &#39;sname&#39;: &#39; 东北门 &#39;,
     &#39;location&#39;: &#39;113.265856,23.149706&#39;,
     &#39;address&#39;: &#39; 桂花岗东1 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991401 &#39;}],
   &#39;photos&#39;: [{&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/4152aa7504576241c2a21d6ed03fc4b7&#39;},
    {&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/682e498d9e5e970e670841bec33e6cd8&#39;},
    {&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/bcd959a58fc339bd10bb3db2fd3ecf12&#39;}]},
  {&#39;id&#39;: &#39;B00140TVAS&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;昆明理工大学(广州校区)&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;中山大道中车陂北街28号&#39;,
   &#39;location&#39;: &#39;113.399378,23.128946&#39;,
   &#39;tel&#39;: &#39;020-82520210&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440106&#39;,
   &#39;adname&#39;: &#39;天河区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413535112&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F011044_267218&#39;,
   &#39;entr_location&#39;: &#39;113.397914,23.128374&#39;,
   &#39;business_area&#39;: &#39;车陂&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-03-18 18:14:11&#39;,
   &#39;alias&#39;: &#39;广州市广通工程技术职业培训学校&#39;,
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: &#39;3.0&#39;, &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/c927eb81f1fea92ff5d92012c1038448&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/dc78aba0a1784708b54ebea96d21a806&#39;}]},
  {&#39;id&#39;: &#39;B0FFIPCYV7&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广州经济技术开发区行政学院&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;开发大道350号&#39;,
   &#39;location&#39;: &#39;113.525724,23.059868&#39;,
   &#39;tel&#39;: [],
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440112&#39;,
   &#39;adname&#39;: &#39;黄埔区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413447200&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F012045_11891&#39;,
   &#39;entr_location&#39;: &#39;113.52556,23.060098&#39;,
   &#39;business_area&#39;: [],
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-03-30 12:03:43&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/775dea571f24dc27c6f5bf64d1bda579&#39;}]},
  {&#39;id&#39;: &#39;B0FFG8723C&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广州工程技术职业学院(黄埔校区)&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;文冲街石化路石化大院166号&#39;,
   &#39;location&#39;: &#39;113.472697,23.10515&#39;,
   &#39;tel&#39;: [],
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440112&#39;,
   &#39;adname&#39;: &#39;黄埔区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413532712&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: [],
   &#39;entr_location&#39;: &#39;113.47267,23.104944&#39;,
   &#39;business_area&#39;: &#39;红山&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-03-26 16:43:13&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/96ce1bc6c800f048eb46dc27f391cd68&#39;}]},
  {&#39;id&#39;: &#39;B0FFG5CSH0&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;湘南学院实习教学基地&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;温泉东路117号附近&#39;,
   &#39;location&#39;: &#39;113.653704,23.653237&#39;,
   &#39;tel&#39;: [],
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440117&#39;,
   &#39;adname&#39;: &#39;从化区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3513358210&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: [],
   &#39;entr_location&#39;: [],
   &#39;business_area&#39;: &#39;温泉&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-03-18 18:26:04&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/82489cd4cc8686615e0c92efb29a54a8&#39;}]},
  {&#39;id&#39;: &#39;B0FFFV9MAC&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广州民航职业技术学院(花都赤坭校区)&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;赤坭镇&#39;,
   &#39;location&#39;: &#39;113.104034,23.395655&#39;,
   &#39;tel&#39;: [],
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440114&#39;,
   &#39;adname&#39;: &#39;花都区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3513007810&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: [],
   &#39;entr_location&#39;: &#39;113.101521,23.396726&#39;,
   &#39;business_area&#39;: [],
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-03-25 11:31:46&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/5d6d42dae7ef818ddc5fe3bade411789&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/92f466a0528336d95061a1001c6b11dc&#39;}]},
  {&#39;id&#39;: &#39;B0FFFAIKXG&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广州商学院&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;九龙镇九龙大道&#39;,
   &#39;location&#39;: &#39;113.56882,23.303876&#39;,
   &#39;tel&#39;: &#39;020-82876130;020-82878480&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440112&#39;,
   &#39;adname&#39;: &#39;黄埔区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413746511&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F009045_1694&#39;,
   &#39;entr_location&#39;: &#39;113.567234,23.302894&#39;,
   &#39;business_area&#39;: [],
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-14 16:01:12&#39;,
   &#39;alias&#39;: &#39;华南师范增城学院&#39;,
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: &#39;外景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/7f9aa9a61ce609fb64c5268dbeaecb2d&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/cc3c2c5e4bd30f7502fad8fa44a813d6&#39;},
    {&#39;title&#39;: &#39;外景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/14769691648dfb561feb31d28266f3da&#39;}]},
  {&#39;id&#39;: &#39;B00141KFHP&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;南方医科大学&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;沙太南路1023-1063号&#39;,
   &#39;location&#39;: &#39;113.333184,23.187549&#39;,
   &#39;tel&#39;: &#39;020-61648502;020-61640114;020-61648504&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440111&#39;,
   &#39;adname&#39;: &#39;白云区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413622612&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F010043_795836;698321&#39;,
   &#39;entr_location&#39;: &#39;113.33681,23.18735&#39;,
   &#39;business_area&#39;: [],
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-08 18:44:45&#39;,
   &#39;alias&#39;: &#39;中国人民解放军第一军医大学&#39;,
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: &#39;外景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/924e4108a6aea4f5888cd51937347202&#39;},
    {&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/dc134e52a67d49a5b879b907aac003d3&#39;},
    {&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/46d6703b7403158af6a9bd2a9029fc84&#39;}]},
  {&#39;id&#39;: &#39;B00141KFAQ&#39;,
   &#39;parent&#39;: &#39;B0FFK4HKF5&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;广州工程技术职业学院龙洞校区&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;龙洞街道天源路1121号&#39;,
   &#39;location&#39;: &#39;113.360274,23.19088&#39;,
   &#39;tel&#39;: &#39;020-87663584&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440106&#39;,
   &#39;adname&#39;: &#39;天河区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3413622822&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F010043_86069;796418&#39;,
   &#39;entr_location&#39;: &#39;113.359995,23.192728&#39;,
   &#39;business_area&#39;: &#39;龙洞&#39;,
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-03-26 13:59:22&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [{&#39;id&#39;: &#39; B00141PSD3 &#39;,
     &#39;name&#39;: &#39; 广州工程技术职业学院龙洞校区(东南门) &#39;,
     &#39;sname&#39;: &#39; 东南门 &#39;,
     &#39;location&#39;: &#39;113.361026,23.189129&#39;,
     &#39;address&#39;: &#39; 天源路1121号 &#39;,
     &#39;distance&#39;: &#39; 0 &#39;,
     &#39;subtype&#39;: &#39;门&#39;,
     &#39;typecode&#39;: &#39; 991400 &#39;}],
   &#39;photos&#39;: [{&#39;title&#39;: &#39;外景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/de5140322d3877562d3e32bb853f7cba&#39;},
    {&#39;title&#39;: &#39;内景图&#39;,
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/291fbc555ebbefc29b22b159982d3fd0&#39;}]},
  {&#39;id&#39;: &#39;B00141JRFZ&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;广东第二师范学院(花都校区)&#39;,
   &#39;tag&#39;: [],
   &#39;type&#39;: &#39;科教文化服务;学校;高等院校&#39;,
   &#39;typecode&#39;: &#39;141201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;迎宾大道西30号&#39;,
   &#39;location&#39;: &#39;113.185576,23.404948&#39;,
   &#39;tel&#39;: &#39;020-36967708&#39;,
   &#39;postcode&#39;: [],
   &#39;website&#39;: [],
   &#39;email&#39;: [],
   &#39;pcode&#39;: &#39;440000&#39;,
   &#39;pname&#39;: &#39;广东省&#39;,
   &#39;citycode&#39;: &#39;020&#39;,
   &#39;cityname&#39;: &#39;广州市&#39;,
   &#39;adcode&#39;: &#39;440114&#39;,
   &#39;adname&#39;: &#39;花都区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;gridcode&#39;: &#39;3513018412&#39;,
   &#39;distance&#39;: [],
   &#39;navi_poiid&#39;: &#39;F49F008042_144827&#39;,
   &#39;entr_location&#39;: &#39;113.184975,23.398431&#39;,
   &#39;business_area&#39;: [],
   &#39;exit_location&#39;: [],
   &#39;match&#39;: &#39;0&#39;,
   &#39;recommend&#39;: &#39;0&#39;,
   &#39;timestamp&#39;: &#39;2020-04-14 18:36:38&#39;,
   &#39;alias&#39;: [],
   &#39;indoor_map&#39;: &#39;0&#39;,
   &#39;indoor_data&#39;: {&#39;cpid&#39;: [], &#39;floor&#39;: [], &#39;truefloor&#39;: [], &#39;cmsid&#39;: []},
   &#39;groupbuy_num&#39;: &#39;0&#39;,
   &#39;discount_num&#39;: &#39;0&#39;,
   &#39;biz_ext&#39;: {&#39;rating&#39;: [], &#39;cost&#39;: []},
   &#39;event&#39;: [],
   &#39;children&#39;: [],
   &#39;photos&#39;: [{&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/e0ff165cbe5814f3ab16f59f5411e590&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/09e302b3cda26be92ee17794a5363da2&#39;},
    {&#39;title&#39;: [],
     &#39;url&#39;: &#39;http://store.is.autonavi.com/showpic/2b0780d8ac5e1e90f46970e65db5e7bf&#39;}]}]}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[303]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_广州_大学</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">广州_大学</span><span class="p">[</span><span class="s2">&quot;pois&quot;</span><span class="p">])</span>
<span class="n">df_广州_大学_广东技术师范大学</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">广州_大学</span><span class="p">[</span><span class="s2">&quot;pois&quot;</span><span class="p">][</span><span class="mi">7</span><span class="p">][</span><span class="s2">&quot;children&quot;</span><span class="p">])</span>
<span class="n">display</span><span class="p">(</span><span class="n">df_广州_大学</span><span class="p">,</span><span class="n">df_广州_大学_广东技术师范大学</span><span class="p">)</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>id</th>
      <th>parent</th>
      <th>childtype</th>
      <th>name</th>
      <th>tag</th>
      <th>type</th>
      <th>typecode</th>
      <th>biz_type</th>
      <th>address</th>
      <th>location</th>
      <th>...</th>
      <th>discount_num</th>
      <th>event</th>
      <th>children</th>
      <th>photos</th>
      <th>indoor_data.cpid</th>
      <th>indoor_data.floor</th>
      <th>indoor_data.truefloor</th>
      <th>indoor_data.cmsid</th>
      <th>biz_ext.rating</th>
      <th>biz_ext.cost</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>B00140458B</td>
      <td>[]</td>
      <td>[]</td>
      <td>广东工业大学(龙洞校区)</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>迎龙路161号</td>
      <td>113.359713,23.19677</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[{'id': ' B00141HYUW ', 'name': ' 广东工业大学龙洞校区(东...</td>
      <td>[{'title': '内景图', 'url': 'http://store.is.auto...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>1</th>
      <td>B0FFFFQZDE</td>
      <td>[]</td>
      <td>[]</td>
      <td>广州医科大学越秀校区</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>东风西路195号</td>
      <td>113.256131,23.134038</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': '内景图', 'url': 'http://store.is.auto...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>2</th>
      <td>B00141IHRZ</td>
      <td>B0FFIGLX5N</td>
      <td>309</td>
      <td>中山大学广州校区南校园</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>新港西路135号</td>
      <td>113.298415,23.096714</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[{'id': ' B00140TAV2 ', 'name': ' 中山大学南校区(北门) ...</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>4.5</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>3</th>
      <td>B00140W6FI</td>
      <td>[]</td>
      <td>[]</td>
      <td>广东交通职业技术学院花都校区</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>工业大道东11号</td>
      <td>113.203282,23.366957</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[{'id': ' B00140UFHS ', 'name': ' 广东交通职业技术学院花都...</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>4</th>
      <td>B001409A53</td>
      <td>[]</td>
      <td>[]</td>
      <td>广东培正学院</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>培正路53号</td>
      <td>113.090459,23.410542</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[{'id': ' B0FFIIMMY2 ', 'name': ' 广东培正学院(北门) '...</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>5</th>
      <td>B00140BQCP</td>
      <td>[]</td>
      <td>[]</td>
      <td>广州美术学院(大学城校区)</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>大学城外环西路168号</td>
      <td>113.382675,23.038572</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[{'id': ' B00141J1UH ', 'name': ' 广州美术学院大学城校区(...</td>
      <td>[{'title': '内景图', 'url': 'http://store.is.auto...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>4.7</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>6</th>
      <td>B00140WEMJ</td>
      <td>[]</td>
      <td>[]</td>
      <td>广东外语外贸大学(北校区)</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>白云大道北2号</td>
      <td>113.29248,23.200471</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[{'id': ' B00140B6G3 ', 'name': ' 广东外语外贸大学北校区(...</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>7</th>
      <td>B00140UF1D</td>
      <td>[]</td>
      <td>[]</td>
      <td>广东技术师范大学</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>中山大道西293号</td>
      <td>113.371742,23.131147</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[{'id': ' B00140TVFC ', 'name': ' 广东技术师范大学(西南门...</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>8</th>
      <td>B00141OISJ</td>
      <td>B00140385E</td>
      <td>309</td>
      <td>广州中医药大学三元里校区</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>机场路12号</td>
      <td>113.26713,23.156024</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>4.0</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>9</th>
      <td>B0FFGH24MR</td>
      <td>[]</td>
      <td>[]</td>
      <td>暨南大学</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>[]</td>
      <td>113.349402,23.133382</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>4.4</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>10</th>
      <td>B00140A367</td>
      <td>B0FFK7GDEE</td>
      <td>309</td>
      <td>广州大学桂花岗校区</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>桂花岗东1号</td>
      <td>113.266066,23.149009</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[{'id': ' B00140UG32 ', 'name': ' 广州大学桂花岗校区(东北...</td>
      <td>[{'title': '内景图', 'url': 'http://store.is.auto...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>11</th>
      <td>B00140TVAS</td>
      <td>[]</td>
      <td>[]</td>
      <td>昆明理工大学(广州校区)</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>中山大道中车陂北街28号</td>
      <td>113.399378,23.128946</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>3.0</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>12</th>
      <td>B0FFIPCYV7</td>
      <td>[]</td>
      <td>[]</td>
      <td>广州经济技术开发区行政学院</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>开发大道350号</td>
      <td>113.525724,23.059868</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>13</th>
      <td>B0FFG8723C</td>
      <td>[]</td>
      <td>[]</td>
      <td>广州工程技术职业学院(黄埔校区)</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>文冲街石化路石化大院166号</td>
      <td>113.472697,23.10515</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>14</th>
      <td>B0FFG5CSH0</td>
      <td>[]</td>
      <td>[]</td>
      <td>湘南学院实习教学基地</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>温泉东路117号附近</td>
      <td>113.653704,23.653237</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>15</th>
      <td>B0FFFV9MAC</td>
      <td>[]</td>
      <td>[]</td>
      <td>广州民航职业技术学院(花都赤坭校区)</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>赤坭镇</td>
      <td>113.104034,23.395655</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>16</th>
      <td>B0FFFAIKXG</td>
      <td>[]</td>
      <td>[]</td>
      <td>广州商学院</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>九龙镇九龙大道</td>
      <td>113.56882,23.303876</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': '外景图', 'url': 'http://store.is.auto...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>17</th>
      <td>B00141KFHP</td>
      <td>[]</td>
      <td>[]</td>
      <td>南方医科大学</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>沙太南路1023-1063号</td>
      <td>113.333184,23.187549</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': '外景图', 'url': 'http://store.is.auto...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>18</th>
      <td>B00141KFAQ</td>
      <td>B0FFK4HKF5</td>
      <td>309</td>
      <td>广州工程技术职业学院龙洞校区</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>龙洞街道天源路1121号</td>
      <td>113.360274,23.19088</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[{'id': ' B00141PSD3 ', 'name': ' 广州工程技术职业学院龙洞...</td>
      <td>[{'title': '外景图', 'url': 'http://store.is.auto...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>19</th>
      <td>B00141JRFZ</td>
      <td>[]</td>
      <td>[]</td>
      <td>广东第二师范学院(花都校区)</td>
      <td>[]</td>
      <td>科教文化服务;学校;高等院校</td>
      <td>141201</td>
      <td>[]</td>
      <td>迎宾大道西30号</td>
      <td>113.185576,23.404948</td>
      <td>...</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
      <td>[{'title': [], 'url': 'http://store.is.autonav...</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
  </tbody>
</table>
<p>20 rows × 46 columns</p>
</div>
</div>

</div>

<div class="output_area">

    <div class="prompt"></div>



<div class="output_html rendered_html output_subarea ">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>id</th>
      <th>name</th>
      <th>sname</th>
      <th>location</th>
      <th>address</th>
      <th>distance</th>
      <th>subtype</th>
      <th>typecode</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>B00140TVFC</td>
      <td>广东技术师范大学(西南门)</td>
      <td>西南门</td>
      <td>113.371504,23.129789</td>
      <td>中山大道西293号</td>
      <td>0</td>
      <td>门</td>
      <td>991401</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#21608;&#36793;&#25628;&#32034;-(&#20195;&#30721;F)">&#21608;&#36793;&#25628;&#32034; (&#20195;&#30721;F)<a class="anchor-link" href="#&#21608;&#36793;&#25628;&#32034;-(&#20195;&#30721;F)">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[304]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># F-1 </span>
<span class="k">def</span> <span class="nf">place_around</span><span class="p">(</span><span class="n">location</span><span class="p">,</span><span class="n">keywords</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">types</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">city</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">redius</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">sortrule</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">offset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">page</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s1">&#39;base&#39;</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/place/around?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;keywords&#39;</span><span class="p">:</span><span class="n">keywords</span><span class="p">,</span>
        <span class="s1">&#39;location&#39;</span><span class="p">:</span><span class="n">location</span><span class="p">,</span>
        <span class="s1">&#39;types&#39;</span><span class="p">:</span><span class="n">types</span><span class="p">,</span>
        <span class="s1">&#39;city&#39;</span><span class="p">:</span><span class="n">city</span><span class="p">,</span>
        <span class="s1">&#39;redius&#39;</span><span class="p">:</span><span class="n">redius</span><span class="p">,</span>
        <span class="s1">&#39;sortrule&#39;</span><span class="p">:</span><span class="n">sortrule</span><span class="p">,</span>
        <span class="s1">&#39;offset&#39;</span><span class="p">:</span><span class="n">offset</span><span class="p">,</span>
        <span class="s1">&#39;page&#39;</span><span class="p">:</span><span class="n">page</span><span class="p">,</span>
        <span class="s1">&#39;extensions&#39;</span><span class="p">:</span><span class="n">extensions</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[305]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># F-2 json信息</span>
<span class="n">中山大学_周边POI</span> <span class="o">=</span> <span class="n">place_around</span><span class="p">(</span><span class="n">中山大学_location</span><span class="p">)</span>
<span class="n">中山大学_周边POI</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[305]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;count&#39;: &#39;881&#39;,
 &#39;info&#39;: &#39;OK&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;suggestion&#39;: {&#39;keywords&#39;: [], &#39;cities&#39;: []},
 &#39;pois&#39;: [{&#39;id&#39;: &#39;B0FFFDCIT4&#39;,
   &#39;parent&#39;: &#39;B001403454&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;中山大学外宾接待室&#39;,
   &#39;type&#39;: &#39;生活服务;生活服务场所;生活服务场所&#39;,
   &#39;typecode&#39;: &#39;070000&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;中山二路74号中山大学北校区&#39;,
   &#39;location&#39;: &#39;113.290083,23.127843&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;84&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFFPATZ0&#39;,
   &#39;parent&#39;: &#39;B0FFK8L6A0&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;中山大学北校区学生第一宿舍楼&#39;,
   &#39;type&#39;: &#39;商务住宅;住宅区;宿舍&#39;,
   &#39;typecode&#39;: &#39;120303&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;中山二路74号&#39;,
   &#39;location&#39;: &#39;113.289157,23.128923&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;114&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFFDASJY&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;北学1食堂&#39;,
   &#39;type&#39;: &#39;餐饮服务;中餐厅;中餐厅&#39;,
   &#39;typecode&#39;: &#39;050100&#39;,
   &#39;biz_type&#39;: &#39;diner&#39;,
   &#39;address&#39;: &#39;中山二路74号中华人民共和国教育部附近&#39;,
   &#39;location&#39;: &#39;113.289005,23.128614&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;124&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFG1LOD6&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;中山大楼&#39;,
   &#39;type&#39;: &#39;商务住宅;楼宇;商务写字楼&#39;,
   &#39;typecode&#39;: &#39;120201&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;岭南路与杏林路交叉口北100米&#39;,
   &#39;location&#39;: &#39;113.289647,23.127532&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;132&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFFPATZ1&#39;,
   &#39;parent&#39;: &#39;B0FFK8L6A0&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;中山大学北校区学生综合宿舍楼&#39;,
   &#39;type&#39;: &#39;商务住宅;住宅区;宿舍&#39;,
   &#39;typecode&#39;: &#39;120303&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;中山二路74号中山大学北校区&#39;,
   &#39;location&#39;: &#39;113.288913,23.128621&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;133&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFHFJPL8&#39;,
   &#39;parent&#39;: &#39;B001403454&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;中山大学学生第二宿舍楼&#39;,
   &#39;type&#39;: &#39;商务住宅;住宅区;宿舍&#39;,
   &#39;typecode&#39;: &#39;120303&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;岭南路与逸仙路交叉口西200米&#39;,
   &#39;location&#39;: &#39;113.289218,23.129506&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;144&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFG58FR3&#39;,
   &#39;parent&#39;: &#39;B001403454&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;中山大学北校区通讯业务厅&#39;,
   &#39;type&#39;: &#39;生活服务;电讯营业厅;电讯营业厅&#39;,
   &#39;typecode&#39;: &#39;070600&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;中山二路74号中山大学北校区&#39;,
   &#39;location&#39;: &#39;113.290836,23.127284&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;159&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFF5UPFF&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;兰州正宗拉面(执信南路店)&#39;,
   &#39;type&#39;: &#39;餐饮服务;中餐厅;清真菜馆&#39;,
   &#39;typecode&#39;: &#39;050121&#39;,
   &#39;biz_type&#39;: &#39;diner&#39;,
   &#39;address&#39;: &#39;执信南路与竹丝岗北直街交叉口南50米&#39;,
   &#39;location&#39;: &#39;113.291782,23.128743&#39;,
   &#39;tel&#39;: &#39;020-87619736&#39;,
   &#39;distance&#39;: &#39;160&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFH86N4U&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;乾方图文&#39;,
   &#39;type&#39;: &#39;生活服务;摄影冲印店;摄影冲印&#39;,
   &#39;typecode&#39;: &#39;071300&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;执信南路117-119号105室&#39;,
   &#39;location&#39;: &#39;113.291782,23.128761&#39;,
   &#39;tel&#39;: &#39;020-87001312;15920330135&#39;,
   &#39;distance&#39;: &#39;161&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFM3WAZG&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;老上海馄饨铺(执信南路店)&#39;,
   &#39;type&#39;: &#39;餐饮服务;快餐厅;快餐厅&#39;,
   &#39;typecode&#39;: &#39;050300&#39;,
   &#39;biz_type&#39;: &#39;diner&#39;,
   &#39;address&#39;: &#39;执信南路116号之3附近&#39;,
   &#39;location&#39;: &#39;113.292035,23.128971&#39;,
   &#39;tel&#39;: &#39;13666909600&#39;,
   &#39;distance&#39;: &#39;190&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFIBPE86&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;鑫辉饺子王&#39;,
   &#39;type&#39;: &#39;餐饮服务;中餐厅;特色/地方风味餐厅&#39;,
   &#39;typecode&#39;: &#39;050118&#39;,
   &#39;biz_type&#39;: &#39;diner&#39;,
   &#39;address&#39;: &#39;执信南路116号首层自编5号&#39;,
   &#39;location&#39;: &#39;113.292033,23.128995&#39;,
   &#39;tel&#39;: &#39;18218465198&#39;,
   &#39;distance&#39;: &#39;190&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFL9OV5S&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;骨头饭&#39;,
   &#39;type&#39;: &#39;餐饮服务;餐饮相关场所;餐饮相关&#39;,
   &#39;typecode&#39;: &#39;050000&#39;,
   &#39;biz_type&#39;: &#39;diner&#39;,
   &#39;address&#39;: [],
   &#39;location&#39;: &#39;113.292032,23.129018&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;191&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFHGS3P9&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;妯娌老鸭粉丝馆(执信南店)&#39;,
   &#39;type&#39;: &#39;餐饮服务;快餐厅;快餐厅&#39;,
   &#39;typecode&#39;: &#39;050300&#39;,
   &#39;biz_type&#39;: &#39;diner&#39;,
   &#39;address&#39;: &#39;执信南路与竹丝岗北直街交叉口东南50米&#39;,
   &#39;location&#39;: &#39;113.292035,23.129011&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;191&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFHFJQAK&#39;,
   &#39;parent&#39;: &#39;B001403454&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;中山大学学生第五宿舍&#39;,
   &#39;type&#39;: &#39;商务住宅;住宅区;宿舍&#39;,
   &#39;typecode&#39;: &#39;120303&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;中山二路74号中山大学北校区&#39;,
   &#39;location&#39;: &#39;113.291035,23.130150&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;192&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B00141P6E7&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;金味楼酒家(执信店)&#39;,
   &#39;type&#39;: &#39;餐饮服务;中餐厅;综合酒楼&#39;,
   &#39;typecode&#39;: &#39;050101&#39;,
   &#39;biz_type&#39;: &#39;diner&#39;,
   &#39;address&#39;: &#39;执信南路116号12楼(近中山医)&#39;,
   &#39;location&#39;: &#39;113.292035,23.129040&#39;,
   &#39;tel&#39;: &#39;020-87662238&#39;,
   &#39;distance&#39;: &#39;192&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFI63KCD&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;丰江源客家豆腐坊(执信南路店)&#39;,
   &#39;type&#39;: &#39;餐饮服务;餐饮相关场所;餐饮相关&#39;,
   &#39;typecode&#39;: &#39;050000&#39;,
   &#39;biz_type&#39;: &#39;diner&#39;,
   &#39;address&#39;: &#39;执信南路116号首层自编8号&#39;,
   &#39;location&#39;: &#39;113.292024,23.129084&#39;,
   &#39;tel&#39;: &#39;18666609252;13719253091&#39;,
   &#39;distance&#39;: &#39;192&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFFRHMUH&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;MS发型&#39;,
   &#39;type&#39;: &#39;生活服务;美容美发店;美容美发店&#39;,
   &#39;typecode&#39;: &#39;071100&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;东风东路执信南路128号即中山大学北校区东门对面&#39;,
   &#39;location&#39;: &#39;113.291953,23.129456&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;201&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFHK2KVX&#39;,
   &#39;parent&#39;: &#39;B0FFK8L6A0&#39;,
   &#39;childtype&#39;: &#39;309&#39;,
   &#39;name&#39;: &#39;中山大学北校区林阁杏教工餐厅&#39;,
   &#39;type&#39;: &#39;餐饮服务;中餐厅;中餐厅&#39;,
   &#39;typecode&#39;: &#39;050100&#39;,
   &#39;biz_type&#39;: &#39;diner&#39;,
   &#39;address&#39;: &#39;执信南路135号附近&#39;,
   &#39;location&#39;: &#39;113.291449,23.130021&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;202&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFFW1KCM&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;执信南路小区&#39;,
   &#39;type&#39;: &#39;商务住宅;住宅区;住宅小区&#39;,
   &#39;typecode&#39;: &#39;120302&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: &#39;执信南路与竹丝岗北直街交叉口南100米&#39;,
   &#39;location&#39;: &#39;113.292195,23.128297&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;205&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []},
  {&#39;id&#39;: &#39;B0FFLPMM86&#39;,
   &#39;parent&#39;: [],
   &#39;childtype&#39;: [],
   &#39;name&#39;: &#39;新境数码摄影印部&#39;,
   &#39;type&#39;: &#39;生活服务;摄影冲印店;摄影冲印&#39;,
   &#39;typecode&#39;: &#39;071300&#39;,
   &#39;biz_type&#39;: [],
   &#39;address&#39;: [],
   &#39;location&#39;: &#39;113.292259,23.129215&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: &#39;219&#39;,
   &#39;biz_ext&#39;: [],
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []}]}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[306]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># F-3 表格化，可扩展pandas处理</span>
<span class="n">df_中山大学_周边POI</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">中山大学_周边POI</span><span class="p">[</span><span class="s1">&#39;pois&#39;</span><span class="p">])</span>
<span class="n">df_中山大学_周边POI</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[306]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>id</th>
      <th>parent</th>
      <th>childtype</th>
      <th>name</th>
      <th>type</th>
      <th>typecode</th>
      <th>biz_type</th>
      <th>address</th>
      <th>location</th>
      <th>tel</th>
      <th>distance</th>
      <th>biz_ext</th>
      <th>importance</th>
      <th>shopid</th>
      <th>shopinfo</th>
      <th>poiweight</th>
      <th>photos</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>B0FFFDCIT4</td>
      <td>B001403454</td>
      <td>309</td>
      <td>中山大学外宾接待室</td>
      <td>生活服务;生活服务场所;生活服务场所</td>
      <td>070000</td>
      <td>[]</td>
      <td>中山二路74号中山大学北校区</td>
      <td>113.290083,23.127843</td>
      <td>[]</td>
      <td>84</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>1</th>
      <td>B0FFFPATZ0</td>
      <td>B0FFK8L6A0</td>
      <td>309</td>
      <td>中山大学北校区学生第一宿舍楼</td>
      <td>商务住宅;住宅区;宿舍</td>
      <td>120303</td>
      <td>[]</td>
      <td>中山二路74号</td>
      <td>113.289157,23.128923</td>
      <td>[]</td>
      <td>114</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>2</th>
      <td>B0FFFDASJY</td>
      <td>[]</td>
      <td>[]</td>
      <td>北学1食堂</td>
      <td>餐饮服务;中餐厅;中餐厅</td>
      <td>050100</td>
      <td>diner</td>
      <td>中山二路74号中华人民共和国教育部附近</td>
      <td>113.289005,23.128614</td>
      <td>[]</td>
      <td>124</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>3</th>
      <td>B0FFG1LOD6</td>
      <td>[]</td>
      <td>[]</td>
      <td>中山大楼</td>
      <td>商务住宅;楼宇;商务写字楼</td>
      <td>120201</td>
      <td>[]</td>
      <td>岭南路与杏林路交叉口北100米</td>
      <td>113.289647,23.127532</td>
      <td>[]</td>
      <td>132</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>4</th>
      <td>B0FFFPATZ1</td>
      <td>B0FFK8L6A0</td>
      <td>309</td>
      <td>中山大学北校区学生综合宿舍楼</td>
      <td>商务住宅;住宅区;宿舍</td>
      <td>120303</td>
      <td>[]</td>
      <td>中山二路74号中山大学北校区</td>
      <td>113.288913,23.128621</td>
      <td>[]</td>
      <td>133</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>5</th>
      <td>B0FFHFJPL8</td>
      <td>B001403454</td>
      <td>309</td>
      <td>中山大学学生第二宿舍楼</td>
      <td>商务住宅;住宅区;宿舍</td>
      <td>120303</td>
      <td>[]</td>
      <td>岭南路与逸仙路交叉口西200米</td>
      <td>113.289218,23.129506</td>
      <td>[]</td>
      <td>144</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>6</th>
      <td>B0FFG58FR3</td>
      <td>B001403454</td>
      <td>309</td>
      <td>中山大学北校区通讯业务厅</td>
      <td>生活服务;电讯营业厅;电讯营业厅</td>
      <td>070600</td>
      <td>[]</td>
      <td>中山二路74号中山大学北校区</td>
      <td>113.290836,23.127284</td>
      <td>[]</td>
      <td>159</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>7</th>
      <td>B0FFF5UPFF</td>
      <td>[]</td>
      <td>[]</td>
      <td>兰州正宗拉面(执信南路店)</td>
      <td>餐饮服务;中餐厅;清真菜馆</td>
      <td>050121</td>
      <td>diner</td>
      <td>执信南路与竹丝岗北直街交叉口南50米</td>
      <td>113.291782,23.128743</td>
      <td>020-87619736</td>
      <td>160</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>8</th>
      <td>B0FFH86N4U</td>
      <td>[]</td>
      <td>[]</td>
      <td>乾方图文</td>
      <td>生活服务;摄影冲印店;摄影冲印</td>
      <td>071300</td>
      <td>[]</td>
      <td>执信南路117-119号105室</td>
      <td>113.291782,23.128761</td>
      <td>020-87001312;15920330135</td>
      <td>161</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>9</th>
      <td>B0FFM3WAZG</td>
      <td>[]</td>
      <td>[]</td>
      <td>老上海馄饨铺(执信南路店)</td>
      <td>餐饮服务;快餐厅;快餐厅</td>
      <td>050300</td>
      <td>diner</td>
      <td>执信南路116号之3附近</td>
      <td>113.292035,23.128971</td>
      <td>13666909600</td>
      <td>190</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>10</th>
      <td>B0FFIBPE86</td>
      <td>[]</td>
      <td>[]</td>
      <td>鑫辉饺子王</td>
      <td>餐饮服务;中餐厅;特色/地方风味餐厅</td>
      <td>050118</td>
      <td>diner</td>
      <td>执信南路116号首层自编5号</td>
      <td>113.292033,23.128995</td>
      <td>18218465198</td>
      <td>190</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>11</th>
      <td>B0FFL9OV5S</td>
      <td>[]</td>
      <td>[]</td>
      <td>骨头饭</td>
      <td>餐饮服务;餐饮相关场所;餐饮相关</td>
      <td>050000</td>
      <td>diner</td>
      <td>[]</td>
      <td>113.292032,23.129018</td>
      <td>[]</td>
      <td>191</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>12</th>
      <td>B0FFHGS3P9</td>
      <td>[]</td>
      <td>[]</td>
      <td>妯娌老鸭粉丝馆(执信南店)</td>
      <td>餐饮服务;快餐厅;快餐厅</td>
      <td>050300</td>
      <td>diner</td>
      <td>执信南路与竹丝岗北直街交叉口东南50米</td>
      <td>113.292035,23.129011</td>
      <td>[]</td>
      <td>191</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>13</th>
      <td>B0FFHFJQAK</td>
      <td>B001403454</td>
      <td>309</td>
      <td>中山大学学生第五宿舍</td>
      <td>商务住宅;住宅区;宿舍</td>
      <td>120303</td>
      <td>[]</td>
      <td>中山二路74号中山大学北校区</td>
      <td>113.291035,23.130150</td>
      <td>[]</td>
      <td>192</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>14</th>
      <td>B00141P6E7</td>
      <td>[]</td>
      <td>[]</td>
      <td>金味楼酒家(执信店)</td>
      <td>餐饮服务;中餐厅;综合酒楼</td>
      <td>050101</td>
      <td>diner</td>
      <td>执信南路116号12楼(近中山医)</td>
      <td>113.292035,23.129040</td>
      <td>020-87662238</td>
      <td>192</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>15</th>
      <td>B0FFI63KCD</td>
      <td>[]</td>
      <td>[]</td>
      <td>丰江源客家豆腐坊(执信南路店)</td>
      <td>餐饮服务;餐饮相关场所;餐饮相关</td>
      <td>050000</td>
      <td>diner</td>
      <td>执信南路116号首层自编8号</td>
      <td>113.292024,23.129084</td>
      <td>18666609252;13719253091</td>
      <td>192</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>16</th>
      <td>B0FFFRHMUH</td>
      <td>[]</td>
      <td>[]</td>
      <td>MS发型</td>
      <td>生活服务;美容美发店;美容美发店</td>
      <td>071100</td>
      <td>[]</td>
      <td>东风东路执信南路128号即中山大学北校区东门对面</td>
      <td>113.291953,23.129456</td>
      <td>[]</td>
      <td>201</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>17</th>
      <td>B0FFHK2KVX</td>
      <td>B0FFK8L6A0</td>
      <td>309</td>
      <td>中山大学北校区林阁杏教工餐厅</td>
      <td>餐饮服务;中餐厅;中餐厅</td>
      <td>050100</td>
      <td>diner</td>
      <td>执信南路135号附近</td>
      <td>113.291449,23.130021</td>
      <td>[]</td>
      <td>202</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>18</th>
      <td>B0FFFW1KCM</td>
      <td>[]</td>
      <td>[]</td>
      <td>执信南路小区</td>
      <td>商务住宅;住宅区;住宅小区</td>
      <td>120302</td>
      <td>[]</td>
      <td>执信南路与竹丝岗北直街交叉口南100米</td>
      <td>113.292195,23.128297</td>
      <td>[]</td>
      <td>205</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>19</th>
      <td>B0FFLPMM86</td>
      <td>[]</td>
      <td>[]</td>
      <td>新境数码摄影印部</td>
      <td>生活服务;摄影冲印店;摄影冲印</td>
      <td>071300</td>
      <td>[]</td>
      <td>[]</td>
      <td>113.292259,23.129215</td>
      <td>[]</td>
      <td>219</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="&#22810;&#36793;&#24418;&#25628;&#32034;-&#65288;&#23398;&#29983;&#32451;&#20064;&#65289;">&#22810;&#36793;&#24418;&#25628;&#32034; &#65288;&#23398;&#29983;&#32451;&#20064;&#65289;<a class="anchor-link" href="#&#22810;&#36793;&#24418;&#25628;&#32034;-&#65288;&#23398;&#29983;&#32451;&#20064;&#65289;">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[307]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># G-1</span>
<span class="k">def</span> <span class="nf">place_polygon</span><span class="p">(</span><span class="n">polygon</span><span class="p">,</span><span class="n">keywords</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">types</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">offset</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">page</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s1">&#39;base&#39;</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/place/polygon?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;keywords&#39;</span><span class="p">:</span><span class="n">keywords</span><span class="p">,</span>
        <span class="s1">&#39;polygon&#39;</span><span class="p">:</span><span class="n">polygon</span><span class="p">,</span>
        <span class="s1">&#39;types&#39;</span><span class="p">:</span><span class="n">types</span><span class="p">,</span>
        <span class="s1">&#39;offset&#39;</span><span class="p">:</span><span class="n">offset</span><span class="p">,</span>
        <span class="s1">&#39;page&#39;</span><span class="p">:</span><span class="n">page</span><span class="p">,</span>
        <span class="s1">&#39;extensions&#39;</span><span class="p">:</span><span class="n">extensions</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>

<span class="c1"># 多边形搜索 = polygon(keywords=&#39;广东&#39;,extensions=&#39;base&#39;)</span>
<span class="c1"># 多边形搜索</span>

<span class="c1"># 中大 = place_polygon(polygon=&quot;113.291418,23.094611&quot;,keywords=&quot;广东&quot;,extensions=&quot;base&quot;)</span>
<span class="c1"># print(中大)</span>
<span class="c1"># df_中大 = pd.json_normalize(中大[&#39;place_polygon&#39;])</span>
<span class="c1"># display(df_中大)</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[308]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">多边形搜索</span> <span class="o">=</span> <span class="n">place_polygon</span><span class="p">(</span><span class="n">polygon</span><span class="o">=</span><span class="s2">&quot;116.460988,40.006919|116.48231,40.007381;116.47516,39.99713|116.472596,39.985227|116.45669,39.984989|116.460988,40.006919&quot;</span><span class="p">,</span><span class="n">keywords</span><span class="o">=</span><span class="s2">&quot;必胜客&quot;</span><span class="p">)</span>
<span class="n">多边形搜索</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[308]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;count&#39;: &#39;1&#39;,
 &#39;info&#39;: &#39;OK&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;suggestion&#39;: {&#39;keywords&#39;: [], &#39;cities&#39;: []},
 &#39;pois&#39;: [{&#39;id&#39;: &#39;B000A7XWX6&#39;,
   &#39;parent&#39;: &#39;B0FFG4VQTD&#39;,
   &#39;childtype&#39;: &#39;202&#39;,
   &#39;name&#39;: &#39;必胜客(望京店)&#39;,
   &#39;type&#39;: &#39;餐饮服务;快餐厅;必胜客&#39;,
   &#39;typecode&#39;: &#39;050303&#39;,
   &#39;biz_type&#39;: &#39;diner&#39;,
   &#39;address&#39;: &#39;望京南湖东园201号楼鑫隆外贸市场&#39;,
   &#39;location&#39;: &#39;116.463853,40.000780&#39;,
   &#39;tel&#39;: [],
   &#39;distance&#39;: [],
   &#39;biz_ext&#39;: [],
   &#39;pname&#39;: &#39;北京市&#39;,
   &#39;cityname&#39;: &#39;北京市&#39;,
   &#39;adname&#39;: &#39;朝阳区&#39;,
   &#39;importance&#39;: [],
   &#39;shopid&#39;: [],
   &#39;shopinfo&#39;: &#39;0&#39;,
   &#39;poiweight&#39;: [],
   &#39;photos&#39;: []}]}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[309]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_多边形搜索</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">多边形搜索</span><span class="p">[</span><span class="s2">&quot;pois&quot;</span><span class="p">])</span>
<span class="n">df_多边形搜索</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[309]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>id</th>
      <th>parent</th>
      <th>childtype</th>
      <th>name</th>
      <th>type</th>
      <th>typecode</th>
      <th>biz_type</th>
      <th>address</th>
      <th>location</th>
      <th>tel</th>
      <th>distance</th>
      <th>biz_ext</th>
      <th>pname</th>
      <th>cityname</th>
      <th>adname</th>
      <th>importance</th>
      <th>shopid</th>
      <th>shopinfo</th>
      <th>poiweight</th>
      <th>photos</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>B000A7XWX6</td>
      <td>B0FFG4VQTD</td>
      <td>202</td>
      <td>必胜客(望京店)</td>
      <td>餐饮服务;快餐厅;必胜客</td>
      <td>050303</td>
      <td>diner</td>
      <td>望京南湖东园201号楼鑫隆外贸市场</td>
      <td>116.463853,40.000780</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>北京市</td>
      <td>北京市</td>
      <td>朝阳区</td>
      <td>[]</td>
      <td>[]</td>
      <td>0</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#38745;&#24577;&#22320;&#22270;--1">&#38745;&#24577;&#22320;&#22270;  1<a class="anchor-link" href="#&#38745;&#24577;&#22320;&#22270;--1">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>思考：相对比较密集的地区，通过静态地图可以作为学校或是比较密集地区的参考地图，简约易看。</li>
</ul>

</div>
</div>
</div>from PIL import Image
from io import BytesIO

i = Image.open(BytesIO(r.content))
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[310]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">PIL</span> <span class="k">import</span> <span class="n">Image</span>
<span class="kn">from</span> <span class="nn">io</span> <span class="k">import</span> <span class="n">BytesIO</span>
<span class="k">def</span> <span class="nf">staticmap</span><span class="p">(</span><span class="n">location</span><span class="p">,</span><span class="n">zoom</span><span class="p">,</span><span class="n">size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">scale</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">markers</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">labels</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">paths</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">traffic</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">page</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/staticmap?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;location&#39;</span><span class="p">:</span><span class="n">location</span><span class="p">,</span>
        <span class="s1">&#39;zoom&#39;</span><span class="p">:</span><span class="n">zoom</span><span class="p">,</span>
        <span class="s1">&#39;size&#39;</span><span class="p">:</span><span class="n">size</span><span class="p">,</span>
        <span class="s1">&#39;scale&#39;</span><span class="p">:</span><span class="n">scale</span><span class="p">,</span>
        <span class="s1">&#39;markers&#39;</span><span class="p">:</span><span class="n">markers</span><span class="p">,</span>
        <span class="s1">&#39;labels&#39;</span><span class="p">:</span><span class="n">labels</span><span class="p">,</span>
        <span class="s1">&#39;paths&#39;</span><span class="p">:</span><span class="n">paths</span><span class="p">,</span>
        <span class="s1">&#39;traffic&#39;</span><span class="p">:</span><span class="n">traffic</span><span class="p">,</span>
        <span class="s1">&#39;sig&#39;</span><span class="p">:</span><span class="n">sig</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">Image</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">BytesIO</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">content</span><span class="p">))</span>
    <span class="k">return</span> <span class="n">data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[311]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">staticmap</span><span class="p">(</span><span class="n">location</span><span class="o">=</span><span class="n">中大_location</span><span class="p">,</span><span class="n">zoom</span><span class="o">=</span><span class="mi">16</span><span class="p">)</span> <span class="c1"># zoom</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[311]:</div>




<div class="output_png output_subarea output_execute_result">
<img src="
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[312]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># def staticmap(zoom,location=None,traffic=None,sig=None)-&gt;dict:</span>
<span class="c1">#     url = &#39;https://restapi.amap.com/v3/staticmap?parameters&#39;</span>
<span class="c1">#     params={</span>
<span class="c1">#         &#39;key&#39;:key_xu,</span>
<span class="c1">#         &#39;zoom&#39;:zoom,</span>
<span class="c1">#         &#39;location&#39;:location,</span>
<span class="c1">#         &#39;traffic&#39;:traffic,</span>
<span class="c1">#         &#39;output&#39;:&#39;json&#39;,</span>
<span class="c1">#         &#39;sig&#39;:&#39;sig&#39;</span>
<span class="c1">#     }</span>
<span class="c1">#     response = requests.get(url,params=params)</span>
<span class="c1">#     data = response.json()</span>
<span class="c1">#     return data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[313]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># staticmap(geocode(&quot;广东省广州市海珠区中山大学&quot;),18)</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[314]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># 静态地图 = staticmap(location=&quot;广东省&quot;,zoom=&quot;18&quot;)</span>
<span class="c1"># 静态地图</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[315]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># df_静态地图 = pd.json_normalize(静态地图)</span>
<span class="c1"># df_静态地图</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="IP&#23450;&#20301;">IP&#23450;&#20301;<a class="anchor-link" href="#IP&#23450;&#20301;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[316]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">ip</span><span class="p">(</span><span class="n">ip</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/ip?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;ip&#39;</span><span class="p">:</span><span class="n">ip</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span><span class="p">,</span>
        <span class="s1">&#39;sig&#39;</span><span class="p">:</span><span class="s1">&#39;sig&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[317]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">北京</span> <span class="o">=</span> <span class="n">ip</span><span class="p">(</span><span class="n">ip</span><span class="o">=</span><span class="s2">&quot;114.247.50.2&quot;</span><span class="p">)</span>
<span class="n">北京</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[317]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;info&#39;: &#39;OK&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;province&#39;: &#39;北京市&#39;,
 &#39;city&#39;: &#39;北京市&#39;,
 &#39;adcode&#39;: &#39;110000&#39;,
 &#39;rectangle&#39;: &#39;116.0119343,39.66127144;116.7829835,40.2164962&#39;}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[318]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_北京</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">北京</span><span class="p">)</span>
<span class="n">df_北京</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[318]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>status</th>
      <th>info</th>
      <th>infocode</th>
      <th>province</th>
      <th>city</th>
      <th>adcode</th>
      <th>rectangle</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>OK</td>
      <td>10000</td>
      <td>北京市</td>
      <td>北京市</td>
      <td>110000</td>
      <td>116.0119343,39.66127144;116.7829835,40.2164962</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#25209;&#37327;&#35831;&#27714;&#25509;&#21475;&#65311;&#65311;&#65311;&#65311;">&#25209;&#37327;&#35831;&#27714;&#25509;&#21475;&#65311;&#65311;&#65311;&#65311;<a class="anchor-link" href="#&#25209;&#37327;&#35831;&#27714;&#25509;&#21475;&#65311;&#65311;&#65311;&#65311;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>高德目前最多支持20个子请求，可以迅速获得想要去的地点周围的酒店或者旅馆，可用于休闲娱乐软件的api调用。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[319]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># def batch(url:&quot;/v3/place/around?offset=10&amp;page=1&amp;key=9aa1b6f172a74fe31afb5c74a2091446&amp;location=116.50394379585519,39.278209477408794&amp;output=json&amp;radius=100000&amp;types=080000&quot;)</span>
<span class="c1"># parameters={</span>
<span class="c1">#     &quot;key&quot;=key,</span>
<span class="c1"># }</span>
<span class="c1"># body={</span>
<span class="c1">#     &quot;ops&quot;: [</span>
<span class="c1">#         {</span>
     
<span class="c1">#             &quot;url&quot;: &#39;{}&#39;.format(url)</span>
<span class="c1">#         },</span>
<span class="c1">#         {</span>
<span class="c1">#             &quot;url&quot;: &quot;/v3/place/around?offset=10&amp;page=1&amp;key=9aa1b6f172a74fe31afb5c74a2091446&amp;location=118.50394379585519,39.278209477408794&amp;output=json&amp;radius=100000&amp;types=080000&quot;</span>
<span class="c1">#         }</span>
<span class="c1">#     ]</span>
<span class="c1"># }</span>
<span class="c1"># r.request.get(&quot;https://restapi.amap.com/v3/batch?&quot;,params=parameters,json=body)</span>
<span class="c1"># data=r.json()</span>
<span class="c1"># return data</span>

<span class="c1"># # batch(r.url)</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[361]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">json</span>
<span class="k">def</span> <span class="nf">batch</span><span class="p">():</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/batch?key=9aa1b6f172a74fe31afb5c74a2091446&#39;</span>
    <span class="n">headers</span> <span class="o">=</span> <span class="p">{</span>
        <span class="s2">&quot;content-type&quot;</span><span class="p">:</span><span class="s2">&quot;application/json&quot;</span>
    <span class="p">}</span>  
    <span class="n">body</span> <span class="o">=</span> <span class="p">{</span>
      <span class="s2">&quot;ops&quot;</span><span class="p">:</span> <span class="p">[</span>
        <span class="p">{</span>
            <span class="s2">&quot;url&quot;</span><span class="p">:</span> <span class="s2">&quot;/v3/place/around?offset=10&amp;page=1&amp;key=9aa1b6f172a74fe31afb5c74a2091446&amp;location=113.291,23.0927&amp;output=json&amp;radius=100000&amp;types=080000&quot;</span>
        <span class="p">},</span>
        <span class="p">{</span>
            <span class="s2">&quot;url&quot;</span><span class="p">:</span> <span class="s2">&quot;/v3/place/around?offset=10&amp;page=1&amp;key=9aa1b6f172a74fe31afb5c74a2091446&amp;location=113.291,23.0927&amp;output=json&amp;radius=100000&amp;types=080000&quot;</span>
        <span class="p">}</span>
        <span class="p">]</span>
      <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">data</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">body</span><span class="p">),</span><span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span> 
<span class="n">result</span> <span class="o">=</span> <span class="n">batch</span><span class="p">()</span>
<span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s1">&#39;body&#39;</span><span class="p">][</span><span class="s1">&#39;pois&#39;</span><span class="p">])</span>
<span class="n">df</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[361]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>typecode</th>
      <th>adname</th>
      <th>id</th>
      <th>pname</th>
      <th>parent</th>
      <th>location</th>
      <th>distance</th>
      <th>address</th>
      <th>cityname</th>
      <th>photos</th>
      <th>type</th>
      <th>shopinfo</th>
      <th>name</th>
      <th>childtype</th>
      <th>biz_ext.rating</th>
      <th>biz_ext.cost</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>080111</td>
      <td>海珠区</td>
      <td>B0FFHP0IC0</td>
      <td>广东省</td>
      <td>B00141IK7I</td>
      <td>113.289692,23.092591</td>
      <td>134</td>
      <td>新港西路百佳购物广场2层</td>
      <td>广州市</td>
      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>
      <td>体育休闲服务;运动场馆;健身中心</td>
      <td>0</td>
      <td>帝摩斯健身(新港西路店)</td>
      <td>202</td>
      <td>5.0</td>
      <td>1260.00</td>
    </tr>
    <tr>
      <th>1</th>
      <td>080100</td>
      <td>海珠区</td>
      <td>B0FFHQZLT3</td>
      <td>广东省</td>
      <td>NaN</td>
      <td>113.289309,23.092623</td>
      <td>173</td>
      <td>新港西路百佳购物广场2层</td>
      <td>广州市</td>
      <td>NaN</td>
      <td>体育休闲服务;运动场馆;运动场所</td>
      <td>0</td>
      <td>健身房</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>2</th>
      <td>080308</td>
      <td>海珠区</td>
      <td>B0FFG6PIZB</td>
      <td>广东省</td>
      <td>NaN</td>
      <td>113.288463,23.093577</td>
      <td>277</td>
      <td>新港西路75号2层</td>
      <td>广州市</td>
      <td>NaN</td>
      <td>体育休闲服务;娱乐场所;网吧</td>
      <td>0</td>
      <td>兴发网咖</td>
      <td>NaN</td>
      <td>2.1</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>3</th>
      <td>080500|080300</td>
      <td>海珠区</td>
      <td>B00141QYKH</td>
      <td>广东省</td>
      <td>B00141IHRZ</td>
      <td>113.293461,23.093855</td>
      <td>282</td>
      <td>中山大学广州南校区蒲园区610号</td>
      <td>广州市</td>
      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>
      <td>体育休闲服务;休闲场所;休闲场所|体育休闲服务;娱乐场所;娱乐场所</td>
      <td>0</td>
      <td>中山大学南校区教工活动中心</td>
      <td>309</td>
      <td>3.5</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>4</th>
      <td>080100</td>
      <td>海珠区</td>
      <td>B0FFKDROME</td>
      <td>广东省</td>
      <td>NaN</td>
      <td>113.288606,23.093982</td>
      <td>283</td>
      <td>怡乐六巷与怡乐路交叉口南100米</td>
      <td>广州市</td>
      <td>NaN</td>
      <td>体育休闲服务;运动场馆;运动场所</td>
      <td>0</td>
      <td>根据地撞球俱乐部</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>5</th>
      <td>080300</td>
      <td>海珠区</td>
      <td>B0FFG00VGE</td>
      <td>广东省</td>
      <td>NaN</td>
      <td>113.290398,23.089990</td>
      <td>307</td>
      <td>新港西路82号</td>
      <td>广州市</td>
      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>
      <td>体育休闲服务;娱乐场所;娱乐场所</td>
      <td>0</td>
      <td>新港82设计师俱乐部</td>
      <td>NaN</td>
      <td>3.5</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>6</th>
      <td>080000</td>
      <td>海珠区</td>
      <td>B0FFI9OL59</td>
      <td>广东省</td>
      <td>NaN</td>
      <td>113.288116,23.093485</td>
      <td>307</td>
      <td>新港西路67号附近</td>
      <td>广州市</td>
      <td>NaN</td>
      <td>体育休闲服务;体育休闲服务场所;体育休闲服务场所</td>
      <td>0</td>
      <td>老人健康活动中心</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>7</th>
      <td>080306</td>
      <td>海珠区</td>
      <td>B0FFHQLWJH</td>
      <td>广东省</td>
      <td>B0FFFYTUW5</td>
      <td>113.288117,23.094530</td>
      <td>358</td>
      <td>新港街道怡乐路78号俞丰酒店二楼</td>
      <td>广州市</td>
      <td>[{'url': 'http://store.is.autonavi.com/showpic...</td>
      <td>体育休闲服务;娱乐场所;棋牌室</td>
      <td>0</td>
      <td>康桥棋艺中心</td>
      <td>202</td>
      <td>3.6</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>8</th>
      <td>080000</td>
      <td>海珠区</td>
      <td>B0FFGJ97H0</td>
      <td>广东省</td>
      <td>NaN</td>
      <td>113.288164,23.094657</td>
      <td>363</td>
      <td>中大怡乐路78号A301瑜丰酒店三楼</td>
      <td>广州市</td>
      <td>NaN</td>
      <td>体育休闲服务;体育休闲服务场所;体育休闲服务场所</td>
      <td>0</td>
      <td>神采健身俱乐部</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
    <tr>
      <th>9</th>
      <td>080111</td>
      <td>海珠区</td>
      <td>B0FFKCRUE2</td>
      <td>广东省</td>
      <td>NaN</td>
      <td>113.287786,23.094207</td>
      <td>369</td>
      <td>怡乐六巷7号附近</td>
      <td>广州市</td>
      <td>NaN</td>
      <td>体育休闲服务;运动场馆;健身中心</td>
      <td>0</td>
      <td>亿力健身</td>
      <td>NaN</td>
      <td>NaN</td>
      <td>NaN</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#22352;&#26631;&#36716;&#25442;">&#22352;&#26631;&#36716;&#25442;<a class="anchor-link" href="#&#22352;&#26631;&#36716;&#25442;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>利用数据字典转化</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[320]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">convert</span><span class="p">(</span><span class="n">locations</span><span class="p">,</span><span class="n">coordays</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/assistant/coordinate/convert?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;locations&#39;</span><span class="p">:</span><span class="n">locations</span><span class="p">,</span>
        <span class="s1">&#39;coordays&#39;</span><span class="p">:</span><span class="n">coordays</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[321]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">广州塔</span> <span class="o">=</span> <span class="n">convert</span><span class="p">(</span><span class="n">locations</span><span class="o">=</span><span class="s2">&quot;116.481499,39.990475|116.481499,39.990375&quot;</span><span class="p">,</span><span class="n">coordays</span><span class="o">=</span><span class="s2">&quot;gps&quot;</span><span class="p">)</span>
<span class="n">广州塔</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[321]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;info&#39;: &#39;ok&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;locations&#39;: &#39;116.481499,39.990475|116.481499,39.990375&#39;}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[322]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_广州塔</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">广州塔</span><span class="p">)</span>
<span class="n">df_广州塔</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[322]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>status</th>
      <th>info</th>
      <th>infocode</th>
      <th>locations</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>ok</td>
      <td>10000</td>
      <td>116.481499,39.990475|116.481499,39.990375</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#22825;&#27668;&#26597;&#35810;">&#22825;&#27668;&#26597;&#35810;<a class="anchor-link" href="#&#22825;&#27668;&#26597;&#35810;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>外出软件提醒可加入此api，又或是雨具贩卖机上可以显示天气情况来进行补货。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[323]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">weatherInfo</span><span class="p">(</span><span class="n">city</span><span class="p">,</span><span class="n">extensions</span><span class="o">=</span><span class="s2">&quot;base&quot;</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/weather/weatherInfo?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;city&#39;</span><span class="p">:</span><span class="n">city</span><span class="p">,</span>
        <span class="s1">&#39;extensions&#39;</span><span class="p">:</span><span class="n">extensions</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[324]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">天气查询</span> <span class="o">=</span> <span class="n">weatherInfo</span><span class="p">(</span><span class="n">city</span><span class="o">=</span><span class="s2">&quot;110101&quot;</span><span class="p">)</span> <span class="c1">#也可以直接中文</span>
<span class="n">天气查询</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[324]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;count&#39;: &#39;1&#39;,
 &#39;info&#39;: &#39;OK&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;lives&#39;: [{&#39;province&#39;: &#39;北京&#39;,
   &#39;city&#39;: &#39;东城区&#39;,
   &#39;adcode&#39;: &#39;110101&#39;,
   &#39;weather&#39;: &#39;晴&#39;,
   &#39;temperature&#39;: &#39;11&#39;,
   &#39;winddirection&#39;: &#39;北&#39;,
   &#39;windpower&#39;: &#39;≤3&#39;,
   &#39;humidity&#39;: &#39;17&#39;,
   &#39;reporttime&#39;: &#39;2020-04-22 20:28:36&#39;}]}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[325]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_天气查询</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">天气查询</span><span class="p">[</span><span class="s2">&quot;lives&quot;</span><span class="p">])</span>
<span class="n">df_天气查询</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[325]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>province</th>
      <th>city</th>
      <th>adcode</th>
      <th>weather</th>
      <th>temperature</th>
      <th>winddirection</th>
      <th>windpower</th>
      <th>humidity</th>
      <th>reporttime</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>北京</td>
      <td>东城区</td>
      <td>110101</td>
      <td>晴</td>
      <td>11</td>
      <td>北</td>
      <td>≤3</td>
      <td>17</td>
      <td>2020-04-22 20:28:36</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#36755;&#20837;&#25552;&#31034;">&#36755;&#20837;&#25552;&#31034;<a class="anchor-link" href="#&#36755;&#20837;&#25552;&#31034;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>外出可以通过搜索提示到达所需地区，即使是名字忘记也可以通过此api提醒。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[326]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">inputtips</span><span class="p">(</span><span class="n">keywords</span><span class="p">,</span><span class="nb">type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">location</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">city</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">datatype</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/assistant/inputtips?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;keywords&#39;</span><span class="p">:</span><span class="n">keywords</span><span class="p">,</span>
        <span class="s1">&#39;type&#39;</span><span class="p">:</span><span class="nb">type</span><span class="p">,</span>
        <span class="s1">&#39;location&#39;</span><span class="p">:</span><span class="n">location</span><span class="p">,</span>
        <span class="s1">&#39;city&#39;</span><span class="p">:</span><span class="n">city</span><span class="p">,</span>
        <span class="s1">&#39;datatype&#39;</span><span class="p">:</span><span class="n">datatype</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[327]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">输入提示</span> <span class="o">=</span> <span class="n">inputtips</span><span class="p">(</span><span class="n">keywords</span><span class="o">=</span><span class="s2">&quot;麦当劳&quot;</span><span class="p">,</span><span class="n">city</span><span class="o">=</span><span class="s2">&quot;汕头&quot;</span><span class="p">)</span>
<span class="n">输入提示</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[327]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;count&#39;: &#39;10&#39;,
 &#39;info&#39;: &#39;OK&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;tips&#39;: [{&#39;id&#39;: [],
   &#39;name&#39;: &#39;麦当劳&#39;,
   &#39;district&#39;: [],
   &#39;adcode&#39;: [],
   &#39;location&#39;: [],
   &#39;address&#39;: [],
   &#39;typecode&#39;: [],
   &#39;city&#39;: []},
  {&#39;id&#39;: &#39;B02F200AKX&#39;,
   &#39;name&#39;: &#39;麦当劳(汕头乐之乐分店)&#39;,
   &#39;district&#39;: &#39;广东省汕头市金平区&#39;,
   &#39;adcode&#39;: &#39;440511&#39;,
   &#39;location&#39;: &#39;116.701249,23.366065&#39;,
   &#39;address&#39;: &#39;金砂路44号&#39;,
   &#39;typecode&#39;: &#39;050302&#39;,
   &#39;city&#39;: []},
  {&#39;id&#39;: &#39;B0FFIPAH9O&#39;,
   &#39;name&#39;: &#39;麦当劳(乐之乐分店甜品站)&#39;,
   &#39;district&#39;: &#39;广东省汕头市金平区&#39;,
   &#39;adcode&#39;: &#39;440511&#39;,
   &#39;location&#39;: &#39;116.701240,23.366030&#39;,
   &#39;address&#39;: &#39;金砂路44号挂钟厂厂区北楼A栋首座&#39;,
   &#39;typecode&#39;: &#39;050300&#39;,
   &#39;city&#39;: []},
  {&#39;id&#39;: &#39;B0FFKPY1VT&#39;,
   &#39;name&#39;: &#39;麦当劳(汕头长平路店)&#39;,
   &#39;district&#39;: &#39;广东省汕头市金平区&#39;,
   &#39;adcode&#39;: &#39;440511&#39;,
   &#39;location&#39;: &#39;116.715586,23.362178&#39;,
   &#39;address&#39;: &#39;长平路93号105号房及二层之一&#39;,
   &#39;typecode&#39;: &#39;050302&#39;,
   &#39;city&#39;: []},
  {&#39;id&#39;: &#39;B0FFLLCFEN&#39;,
   &#39;name&#39;: &#39;麦当劳(中山路店)&#39;,
   &#39;district&#39;: &#39;广东省汕头市金平区&#39;,
   &#39;adcode&#39;: &#39;440511&#39;,
   &#39;location&#39;: &#39;116.709601,23.357664&#39;,
   &#39;address&#39;: &#39;中山路126号&#39;,
   &#39;typecode&#39;: &#39;050302&#39;,
   &#39;city&#39;: []},
  {&#39;id&#39;: &#39;B0FFG1DYU6&#39;,
   &#39;name&#39;: &#39;麦当劳(长江路分店)&#39;,
   &#39;district&#39;: &#39;广东省汕头市龙湖区&#39;,
   &#39;adcode&#39;: &#39;440507&#39;,
   &#39;location&#39;: &#39;116.723557,23.377140&#39;,
   &#39;address&#39;: &#39;长江路23号新一城商业中心F1层&#39;,
   &#39;typecode&#39;: &#39;050302&#39;,
   &#39;city&#39;: []},
  {&#39;id&#39;: &#39;B0FFH9P866&#39;,
   &#39;name&#39;: &#39;麦当劳(汕樟路店)&#39;,
   &#39;district&#39;: &#39;广东省汕头市金平区&#39;,
   &#39;adcode&#39;: &#39;440511&#39;,
   &#39;location&#39;: &#39;116.694038,23.362732&#39;,
   &#39;address&#39;: &#39;汕樟路39号&#39;,
   &#39;typecode&#39;: &#39;050302&#39;,
   &#39;city&#39;: []},
  {&#39;id&#39;: &#39;B0FFIIW47X&#39;,
   &#39;name&#39;: &#39;麦当劳(卜蜂中心店)&#39;,
   &#39;district&#39;: &#39;广东省汕头市金平区&#39;,
   &#39;adcode&#39;: &#39;440511&#39;,
   &#39;location&#39;: &#39;116.712717,23.387825&#39;,
   &#39;address&#39;: &#39;东厦北路与华山路交界处东北侧卜蜂中心1F&#39;,
   &#39;typecode&#39;: &#39;050302&#39;,
   &#39;city&#39;: []},
  {&#39;id&#39;: &#39;B02F200D0I&#39;,
   &#39;name&#39;: &#39;麦当劳(汕头大诚分店)&#39;,
   &#39;district&#39;: &#39;广东省汕头市龙湖区&#39;,
   &#39;adcode&#39;: &#39;440507&#39;,
   &#39;location&#39;: &#39;116.728418,23.366251&#39;,
   &#39;address&#39;: &#39;金砂路124号华美大厦首层&#39;,
   &#39;typecode&#39;: &#39;050302&#39;,
   &#39;city&#39;: []},
  {&#39;id&#39;: &#39;B0FFIT2V0T&#39;,
   &#39;name&#39;: &#39;麦当劳(黄河路得来速店)&#39;,
   &#39;district&#39;: &#39;广东省汕头市龙湖区&#39;,
   &#39;adcode&#39;: &#39;440507&#39;,
   &#39;location&#39;: &#39;116.731140,23.385092&#39;,
   &#39;address&#39;: &#39;黄河路37号御景江南花园1幢首层108-111号商铺&#39;,
   &#39;typecode&#39;: &#39;050302&#39;,
   &#39;city&#39;: []}]}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[328]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_输入提示</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">输入提示</span><span class="p">[</span><span class="s2">&quot;tips&quot;</span><span class="p">])</span>
<span class="n">df_输入提示</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[328]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>id</th>
      <th>name</th>
      <th>district</th>
      <th>adcode</th>
      <th>location</th>
      <th>address</th>
      <th>typecode</th>
      <th>city</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>[]</td>
      <td>麦当劳</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>1</th>
      <td>B02F200AKX</td>
      <td>麦当劳(汕头乐之乐分店)</td>
      <td>广东省汕头市金平区</td>
      <td>440511</td>
      <td>116.701249,23.366065</td>
      <td>金砂路44号</td>
      <td>050302</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>2</th>
      <td>B0FFIPAH9O</td>
      <td>麦当劳(乐之乐分店甜品站)</td>
      <td>广东省汕头市金平区</td>
      <td>440511</td>
      <td>116.701240,23.366030</td>
      <td>金砂路44号挂钟厂厂区北楼A栋首座</td>
      <td>050300</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>3</th>
      <td>B0FFKPY1VT</td>
      <td>麦当劳(汕头长平路店)</td>
      <td>广东省汕头市金平区</td>
      <td>440511</td>
      <td>116.715586,23.362178</td>
      <td>长平路93号105号房及二层之一</td>
      <td>050302</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>4</th>
      <td>B0FFLLCFEN</td>
      <td>麦当劳(中山路店)</td>
      <td>广东省汕头市金平区</td>
      <td>440511</td>
      <td>116.709601,23.357664</td>
      <td>中山路126号</td>
      <td>050302</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>5</th>
      <td>B0FFG1DYU6</td>
      <td>麦当劳(长江路分店)</td>
      <td>广东省汕头市龙湖区</td>
      <td>440507</td>
      <td>116.723557,23.377140</td>
      <td>长江路23号新一城商业中心F1层</td>
      <td>050302</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>6</th>
      <td>B0FFH9P866</td>
      <td>麦当劳(汕樟路店)</td>
      <td>广东省汕头市金平区</td>
      <td>440511</td>
      <td>116.694038,23.362732</td>
      <td>汕樟路39号</td>
      <td>050302</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>7</th>
      <td>B0FFIIW47X</td>
      <td>麦当劳(卜蜂中心店)</td>
      <td>广东省汕头市金平区</td>
      <td>440511</td>
      <td>116.712717,23.387825</td>
      <td>东厦北路与华山路交界处东北侧卜蜂中心1F</td>
      <td>050302</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>8</th>
      <td>B02F200D0I</td>
      <td>麦当劳(汕头大诚分店)</td>
      <td>广东省汕头市龙湖区</td>
      <td>440507</td>
      <td>116.728418,23.366251</td>
      <td>金砂路124号华美大厦首层</td>
      <td>050302</td>
      <td>[]</td>
    </tr>
    <tr>
      <th>9</th>
      <td>B0FFIT2V0T</td>
      <td>麦当劳(黄河路得来速店)</td>
      <td>广东省汕头市龙湖区</td>
      <td>440507</td>
      <td>116.731140,23.385092</td>
      <td>黄河路37号御景江南花园1幢首层108-111号商铺</td>
      <td>050302</td>
      <td>[]</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#20132;&#36890;&#24577;&#21183;">&#20132;&#36890;&#24577;&#21183;<a class="anchor-link" href="#&#20132;&#36890;&#24577;&#21183;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>出行打车软件可以接入此api，就不必担心师傅是否是因为交通拥挤而绕路。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[329]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># 路径 IP 交通态势 三个api调用便可以知道路况</span>
<span class="k">def</span> <span class="nf">rectangle</span><span class="p">(</span><span class="n">rectangle</span><span class="p">,</span><span class="n">level</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span><span class="n">sig</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v3/traffic/status/rectangle?parameters&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;key&#39;</span><span class="p">:</span><span class="n">key_xu</span><span class="p">,</span>
        <span class="s1">&#39;level&#39;</span><span class="p">:</span><span class="n">level</span><span class="p">,</span>
        <span class="s1">&#39;rectangle&#39;</span><span class="p">:</span><span class="n">rectangle</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[330]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">交通态势</span> <span class="o">=</span> <span class="n">rectangle</span><span class="p">(</span><span class="n">rectangle</span><span class="o">=</span><span class="s2">&quot;116.351147,39.966309;116.357134,39.968727&quot;</span><span class="p">)</span>
<span class="n">交通态势</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[330]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;status&#39;: &#39;1&#39;,
 &#39;info&#39;: &#39;OK&#39;,
 &#39;infocode&#39;: &#39;10000&#39;,
 &#39;trafficinfo&#39;: {&#39;description&#39;: &#39;北三环路：双向畅通。&#39;,
  &#39;evaluation&#39;: {&#39;expedite&#39;: &#39;100.00%&#39;,
   &#39;congested&#39;: &#39;0.00%&#39;,
   &#39;blocked&#39;: &#39;0.00%&#39;,
   &#39;unknown&#39;: &#39;0.00%&#39;,
   &#39;status&#39;: &#39;1&#39;,
   &#39;description&#39;: &#39;整体畅通&#39;}}}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[331]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_交通态势</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">交通态势</span><span class="p">[</span><span class="s2">&quot;trafficinfo&quot;</span><span class="p">])</span>
<span class="n">df_交通态势</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[331]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>description</th>
      <th>evaluation.expedite</th>
      <th>evaluation.congested</th>
      <th>evaluation.blocked</th>
      <th>evaluation.unknown</th>
      <th>evaluation.status</th>
      <th>evaluation.description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>北三环路：双向畅通。</td>
      <td>100.00%</td>
      <td>0.00%</td>
      <td>0.00%</td>
      <td>0.00%</td>
      <td>1</td>
      <td>整体畅通</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#22320;&#29702;&#22260;&#26639;-&#65311;&#65311;&#65311;&#65311;">&#22320;&#29702;&#22260;&#26639; &#65311;&#65311;&#65311;&#65311;<a class="anchor-link" href="#&#22320;&#29702;&#22260;&#26639;-&#65311;&#65311;&#65311;&#65311;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>增减围栏进行监控</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[332]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">geofence</span><span class="p">(</span><span class="n">radius</span><span class="p">,</span><span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span><span class="o">-&gt;</span><span class="nb">dict</span><span class="p">:</span>
    <span class="n">url</span> <span class="o">=</span> <span class="s1">&#39;https://restapi.amap.com/v4/geofence/meta?key=9aa1b6f172a74fe31afb5c74a2091446&#39;</span>
    <span class="n">params</span><span class="o">=</span><span class="p">{</span>
        <span class="s1">&#39;name&#39;</span><span class="p">:</span><span class="n">name</span><span class="p">,</span>
        <span class="s1">&#39;radius&#39;</span><span class="p">:</span><span class="n">radius</span><span class="p">,</span>
        <span class="s1">&#39;output&#39;</span><span class="p">:</span><span class="s1">&#39;json&#39;</span>
    <span class="p">}</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">params</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[333]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">地理围栏</span> <span class="o">=</span> <span class="n">geofence</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">&quot;weilan&quot;</span><span class="p">,</span><span class="n">radius</span><span class="o">=</span><span class="mi">3000</span><span class="p">)</span>
<span class="n">地理围栏</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[333]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;data&#39;: {&#39;page_no&#39;: 1, &#39;page_size&#39;: 20, &#39;rs_list&#39;: [], &#39;total_record&#39;: 0},
 &#39;errcode&#39;: 0,
 &#39;errdetail&#39;: None,
 &#39;errmsg&#39;: &#39;OK&#39;,
 &#39;ext&#39;: None}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[334]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_地理围栏</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">json_normalize</span><span class="p">(</span><span class="n">地理围栏</span><span class="p">)</span>
<span class="n">df_地理围栏</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[334]:</div>



<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style scoped>
    .dataframe tbody tr th:only-of-type {
        vertical-align: middle;
    }

    .dataframe tbody tr th {
        vertical-align: top;
    }

    .dataframe thead th {
        text-align: right;
    }
</style>
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>errcode</th>
      <th>errdetail</th>
      <th>errmsg</th>
      <th>ext</th>
      <th>data.page_no</th>
      <th>data.page_size</th>
      <th>data.rs_list</th>
      <th>data.total_record</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>0</td>
      <td>None</td>
      <td>OK</td>
      <td>None</td>
      <td>1</td>
      <td>20</td>
      <td>[]</td>
      <td>0</td>
    </tr>
  </tbody>
</table>
</div>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[363]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># def geofence():</span>
<span class="c1">#     parameters = {</span>
<span class="c1">#         &quot;key&quot;:&quot;9aa1b6f172a74fe31afb5c74a2091446&quot;,</span>
<span class="c1">#     }</span>
<span class="c1">#     body=[{</span>
<span class="c1">#         &quot;x&quot;: 116.449429,</span>
<span class="c1">#         &quot;y&quot;: 40.014844,</span>
<span class="c1">#         &quot;sp&quot;: 4,</span>
<span class="c1">#         &quot;ag&quot;: 110,</span>
<span class="c1">#         &quot;tm&quot;: 1478831753</span>
<span class="c1">#         }, {</span>
<span class="c1">#         &quot;x&quot;: 116.449639,</span>
<span class="c1">#         &quot;y&quot;: 40.014776,</span>
<span class="c1">#         &quot;sp&quot;: 3,</span>
<span class="c1">#         &quot;ag&quot;: 110,</span>
<span class="c1">#         &quot;tm&quot;: 23</span>
<span class="c1">#         }, {</span>
<span class="c1">#         &quot;x&quot;: 116.449859,</span>
<span class="c1">#         &quot;y&quot;: 40.014716,</span>
<span class="c1">#         &quot;sp&quot;: 3,</span>
<span class="c1">#         &quot;ag&quot;: 111,</span>
<span class="c1">#         &quot;tm&quot;: 33</span>
<span class="c1">#         }, {</span>
<span class="c1">#         &quot;x&quot;: 116.450074,</span>
<span class="c1">#         &quot;y&quot;: 40.014658,</span>
<span class="c1">#         &quot;sp&quot;: 3,</span>
<span class="c1">#         &quot;ag&quot;: 110,</span>
<span class="c1">#         &quot;tm&quot;: 31</span>
<span class="c1">#         }, {</span>
<span class="c1">#         &quot;x&quot;: 116.450273,</span>
<span class="c1">#         &quot;y&quot;: 40.014598,</span>
<span class="c1">#         &quot;sp&quot;: 3,</span>
<span class="c1">#         &quot;ag&quot;: 111,</span>
<span class="c1">#         &quot;tm&quot;: 20 }]</span>
<span class="c1"># response = requests.get(&quot;https://restapi.amap.com/v4/grasproad/driving&quot;,params=parameters,json=body)</span>
<span class="c1"># data = response.json()</span>
<span class="c1"># return data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="&#36712;&#36857;&#32416;&#20559;-&#65311;&#65311;&#65311;&#65311;">&#36712;&#36857;&#32416;&#20559; &#65311;&#65311;&#65311;&#65311;<a class="anchor-link" href="#&#36712;&#36857;&#32416;&#20559;-&#65311;&#65311;&#65311;&#65311;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li>定位或多或少都会存在一定的误差，也许是在片落后的地区信号不好，又或是楼宇密集、高架桥、隧道等，或许会使用基站定位，那么此刻的定位误差就会加大，产生轨迹漂移的现象。那这个时候就需要高德API的轨迹纠错，通过高性能、可配置和适用性来实现我们需要的数据。</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[366]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">geofence</span><span class="p">():</span>
    <span class="n">parameters</span> <span class="o">=</span> <span class="p">{</span>
        <span class="s2">&quot;key&quot;</span><span class="p">:</span><span class="s2">&quot;9aa1b6f172a74fe31afb5c74a2091446&quot;</span><span class="p">,</span>
    <span class="p">}</span>
    <span class="n">body</span><span class="o">=</span><span class="p">[{</span>
        <span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="mf">116.449429</span><span class="p">,</span>
        <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="mf">40.014844</span><span class="p">,</span>
        <span class="s2">&quot;sp&quot;</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span>
        <span class="s2">&quot;ag&quot;</span><span class="p">:</span> <span class="mi">110</span><span class="p">,</span>
        <span class="s2">&quot;tm&quot;</span><span class="p">:</span> <span class="mi">1478831753</span>
        <span class="p">},</span> <span class="p">{</span>
        <span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="mf">116.449639</span><span class="p">,</span>
        <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="mf">40.014776</span><span class="p">,</span>
        <span class="s2">&quot;sp&quot;</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
        <span class="s2">&quot;ag&quot;</span><span class="p">:</span> <span class="mi">110</span><span class="p">,</span>
        <span class="s2">&quot;tm&quot;</span><span class="p">:</span> <span class="mi">23</span>
        <span class="p">},</span> <span class="p">{</span>
        <span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="mf">116.449859</span><span class="p">,</span>
        <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="mf">40.014716</span><span class="p">,</span>
        <span class="s2">&quot;sp&quot;</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
        <span class="s2">&quot;ag&quot;</span><span class="p">:</span> <span class="mi">111</span><span class="p">,</span>
        <span class="s2">&quot;tm&quot;</span><span class="p">:</span> <span class="mi">33</span>
        <span class="p">},</span> <span class="p">{</span>
        <span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="mf">116.450074</span><span class="p">,</span>
        <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="mf">40.014658</span><span class="p">,</span>
        <span class="s2">&quot;sp&quot;</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
        <span class="s2">&quot;ag&quot;</span><span class="p">:</span> <span class="mi">110</span><span class="p">,</span>
        <span class="s2">&quot;tm&quot;</span><span class="p">:</span> <span class="mi">31</span>
        <span class="p">},</span> <span class="p">{</span>
        <span class="s2">&quot;x&quot;</span><span class="p">:</span> <span class="mf">116.450273</span><span class="p">,</span>
        <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="mf">40.014598</span><span class="p">,</span>
        <span class="s2">&quot;sp&quot;</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
        <span class="s2">&quot;ag&quot;</span><span class="p">:</span> <span class="mi">111</span><span class="p">,</span>
        <span class="s2">&quot;tm&quot;</span><span class="p">:</span> <span class="mi">20</span> <span class="p">}]</span>
    <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;https://restapi.amap.com/v4/grasproad/driving&quot;</span><span class="p">,</span><span class="n">params</span><span class="o">=</span><span class="n">parameters</span><span class="p">,</span><span class="n">json</span><span class="o">=</span><span class="n">body</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span>
    <span class="k">return</span> <span class="n">data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[367]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">geofence</span><span class="p">()</span>
</pre></div>

    </div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

    <div class="prompt output_prompt">Out[367]:</div>




<div class="output_text output_subarea output_execute_result">
<pre>{&#39;data&#39;: {&#39;distance&#39;: 33.0,
  &#39;points&#39;: [{&#39;x&#39;: 116.44942000249563, &#39;y&#39;: 40.014843356125866},
   {&#39;x&#39;: 116.44945705955585, &#39;y&#39;: 40.01453960973057}]},
 &#39;errcode&#39;: 0,
 &#39;errdetail&#39;: None,
 &#39;errmsg&#39;: &#39;OK&#39;,
 &#39;ext&#39;: None}</pre>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[368]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># def grasproad(locations)-&gt;dict:</span>
<span class="c1">#     url = &#39;https://restapi.amap.com/v4/grasproad/driving&#39;</span>
<span class="c1">#     params={</span>
<span class="c1">#         &#39;key&#39;:key_xu,</span>
<span class="c1">#         &#39;locations&#39;:locations,</span>
<span class="c1">#         &#39;output&#39;:&#39;json&#39;</span>
<span class="c1">#     }</span>
<span class="c1">#     response = requests.post(url,params=params)</span>
<span class="c1">#     data = response.json()</span>
<span class="c1">#     return data</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[369]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># 轨迹纠偏 = grasproad(locations=&quot;116.731140,23.385092&quot;)</span>
<span class="c1"># 轨迹纠偏</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[370]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># df_轨迹纠偏 = pd.json_normalize(轨迹纠偏)</span>
<span class="c1"># df_轨迹纠偏</span>
</pre></div>

    </div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="&#24635;&#32467;&#21450;&#23637;&#26395;">&#24635;&#32467;&#21450;&#23637;&#26395;<a class="anchor-link" href="#&#24635;&#32467;&#21450;&#23637;&#26395;">&#182;</a></h1><h2 id="&#23545;&#20110;&#22797;&#26434;json">&#23545;&#20110;&#22797;&#26434;json<a class="anchor-link" href="#&#23545;&#20110;&#22797;&#26434;json">&#182;</a></h2><p>对于复杂json，细读API文档和测试尤其关键，可能有些功能是测试完才知道如何实现和体现其价值的</p>
<h2 id="&#24605;&#32771;&#22320;&#22270;POI&#20013;&#30340;&#25512;&#33616;&#31639;&#27861;&#24037;&#20316;&#21407;&#29702;">&#24605;&#32771;&#22320;&#22270;POI&#20013;&#30340;&#25512;&#33616;&#31639;&#27861;&#24037;&#20316;&#21407;&#29702;<a class="anchor-link" href="#&#24605;&#32771;&#22320;&#22270;POI&#20013;&#30340;&#25512;&#33616;&#31639;&#27861;&#24037;&#20316;&#21407;&#29702;">&#182;</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li><p><strong>Q</strong>:至少完成每一个模块中的一个子功能的API调用，封装成函数，开源到github/gitee上</p>
</li>
<li><p><strong>Q</strong>:在调用每一个功能的同时，思考其背后是否含有ML、AI的功能（比如计算机视觉、语音识别、推荐算法等），并整理思考的结果，在调用API代码模块中用markdown说明。</p>
</li>
<li><p><strong>Q</strong>:尝试设计一个简单的应用（不要求写代码），至少涉及3个API功能。</p>
</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<ul>
<li><strong>A</strong>:</li>
<li><p>楼宇密集、轨道、高架桥地理导航：</p>
<p>1.<strong>地理编码查询</strong>2.<strong>ip查询</strong> 3.<strong>轨迹纠偏</strong> 通过更精准的ip定点 在通过轨迹纠偏避免出现地点错乱现象。</p>
</li>
</ul>
<ul>
<li><p>A:线上课程：</p>
<p>1.<strong>视频软件api</strong> 进度条让客户更加直观了解流程进行的程度，不会在慌乱或者卡顿中错过细节讯息。而视频软件api的介入，使得直播也可以像进度条一样调节从而缓解错失讯息的焦虑。</p>
<p>2.<strong>美颜软件api</strong>很多公司把“视频会议”开成了“电话会议”，但是看到的比听到的更能增加理解力和团队之间的信任。而美颜软件api的介入使得突如其来的办公会议不再手忙脚乱</p>
<p>3.<strong>讯飞api</strong> 不同老师的口音可以转化为文字，而且可以云端保存，记录老师讲课内容，使得在线视频语言得以转化为中英文 更有利于各种突发状况的影响，并提高学习效率。</p>
</li>
</ul>

</div>
</div>
</div>
    </div>
  </div>
</body>

 


</html>
